1 00:00:00,000 --> 00:00:05,140 2 00:00:05,140 --> 00:00:05,640 Gut. 3 00:00:05,640 --> 00:00:08,330 So, jetzt über etwas sprechen lassen in programming-- wirklich nützlich 4 00:00:08,330 --> 00:00:09,914 bedingte Anweisungen. 5 00:00:09,914 --> 00:00:11,830 So bedingte Ausdrücke lassen Sie Ihren Programmen 6 00:00:11,830 --> 00:00:14,538 um Entscheidungen zu treffen und verschiedene Gabel in der Straße, etwas 7 00:00:14,538 --> 00:00:17,670 Ich spielte auf etwas früher, abhängig von den Werten von Variablen, 8 00:00:17,670 --> 00:00:20,990 oder basierend, was die Benutzereingaben an der Programmierer, in der Befehlszeile, 9 00:00:20,990 --> 00:00:23,130 oder, wenn Sie gefragt haben, oder etwas ähnliches. 10 00:00:23,130 --> 00:00:26,690 C hat eine Reihe von verschiedenen Möglichkeiten, Ausdruck bedingte Ausdrücke, die 11 00:00:26,690 --> 00:00:29,911 wir manchmal nennen bedingte Verzweigung in Ihren Programmen. 12 00:00:29,911 --> 00:00:32,910 Und einige von ihnen gehen, um zu suchen ziemlich vertraut, Sie von Grund auf neu, 13 00:00:32,910 --> 00:00:35,190 so dass wir auch ziehen sie nebeneinander, nur 14 00:00:35,190 --> 00:00:38,170 Sie können diese Analogie in Ihrem Kopf zu machen. 15 00:00:38,170 --> 00:00:41,250 >> Also, wenn es eine ziemlich if-- einfache bedingte. 16 00:00:41,250 --> 00:00:43,560 Wenn Sie von erinnern Kratzer auf der rechten Seite hier 17 00:00:43,560 --> 00:00:50,000 Sie könnten füllen Sie also Sechs mit einem blauen Ausdruck, wenn die Maus nach unten 18 00:00:50,000 --> 00:00:53,010 oder wenn x kleiner als 10 ist, oder etwas ähnliches. 19 00:00:53,010 --> 00:00:57,390 Und dann, wenn x weniger als 10, oder, wenn die Maus in der Tat, nach unten, 20 00:00:57,390 --> 00:01:01,140 den gesamten Code innerhalb der Puzzle-Stück würde auszuführen. 21 00:01:01,140 --> 00:01:03,720 All die Dinge, die passen innerhalb dieser C-Form. 22 00:01:03,720 --> 00:01:07,200 >> In ähnlicher Weise haben wir Wenn auf der linken Seite. 23 00:01:07,200 --> 00:01:09,210 Wenn Boolescher Ausdruck, was ich bin nur mit 24 00:01:09,210 --> 00:01:13,010 als Ersatz für eine der Booleschen Ausdrücke, die wir zuvor besprochen, 25 00:01:13,010 --> 00:01:15,240 offene geschweifte Klammer, in der Nähe geschweifte Klammer. 26 00:01:15,240 --> 00:01:17,720 So denken öffnenden geschweiften Klammer und geschlossene geschweifte Klammer 27 00:01:17,720 --> 00:01:22,720 als eine Art analog der Sandwich Wirkung der if-Block auf der rechten Seite 28 00:01:22,720 --> 00:01:24,070 von Anfang an. 29 00:01:24,070 --> 00:01:28,680 >> Wenn der boolesche Ausdruck in der, wenn Aussage wahr ist, 30 00:01:28,680 --> 00:01:30,900 dann werden alle Codezeilen zwischen den geschweiften Klammern 31 00:01:30,900 --> 00:01:33,870 werden in der Reihenfolge ausführen von oben nach unten. 32 00:01:33,870 --> 00:01:35,700 Wenn der boolesche Ausdruck falsch ist, werden wir 33 00:01:35,700 --> 00:01:38,610 überspringen alles dazwischen die geschweiften Klammern, denn nur wir 34 00:01:38,610 --> 00:01:44,570 möchte in die Straße hinuntergehen, dass die Gabel wenn der Boolesche Ausdruck wahr ist. 35 00:01:44,570 --> 00:01:48,540 >> Wir können noch einen Schritt zu nehmen ferner mit, wenn andere. 36 00:01:48,540 --> 00:01:50,820 Also das Scratch-Block ziemlich ähnlich dem 37 00:01:50,820 --> 00:01:55,884 wir sahen nur eine Sekunde vor, mit der Ausnahme, dauert es zwei verschiedene Wege auf der Basis 38 00:01:55,884 --> 00:01:56,550 auf, was passiert. 39 00:01:56,550 --> 00:02:00,420 Also, wenn die Maus nach unten war, oder wenn x weniger als 10, 40 00:02:00,420 --> 00:02:04,780 wir werden alles, was dazwischen ist zu tun dass erste Gabel, dass erste C, 41 00:02:04,780 --> 00:02:08,430 >> Wenn andernfalls die Maus oben, oder x ist nicht kleiner als 10, 42 00:02:08,430 --> 00:02:10,460 wir werden alles in der zweiten Menge zu tun. 43 00:02:10,460 --> 00:02:15,010 Und das ist, analog zu, was Sie sehen hier für C. Wenn Boolescher Ausdruck, 44 00:02:15,010 --> 00:02:17,910 tun das Zeug zwischen die erste geschweifte Klammern gesetzt. 45 00:02:17,910 --> 00:02:20,550 Else, tun das Zeug zwischen die zweite geschweifte Klammern gesetzt. 46 00:02:20,550 --> 00:02:22,080 Also, wenn der Boolean Ausdruck wahr ist, werden wir 47 00:02:22,080 --> 00:02:23,580 tun, was zwischen dem ersten Satz ist. 48 00:02:23,580 --> 00:02:27,480 Wenn der boolesche Ausdruck falsch, das wäre das sonst auslösen, 49 00:02:27,480 --> 00:02:30,100 und wir würden was auch immer in zu tun der zweite Satz von geschweiften Klammern. 50 00:02:30,100 --> 00:02:34,190 Wieder oben nach unten, die alle Linien zwischen den geschweiften Klammern. 51 00:02:34,190 --> 00:02:38,130 >> In C, dann ist es möglich, zu erstellen eine if-else-if-else-Kette. 52 00:02:38,130 --> 00:02:42,000 In der Tat können Sie haben if-else-if-else if-else, wenn und so weiter und so weiter und so 53 00:02:42,000 --> 00:02:42,720 am. 54 00:02:42,720 --> 00:02:44,660 In Scratch, dies erforderlich Verschachtelung der Blöcke. 55 00:02:44,660 --> 00:02:48,280 Sie fügen eine if-else, und Sie hatten anders eine innerhalb der anderen, 56 00:02:48,280 --> 00:02:51,110 und so weiter, und es wurde Art von verschachtelten und kompliziert. 57 00:02:51,110 --> 00:02:52,450 Aber C, wir nicht haben, das zu tun. 58 00:02:52,450 --> 00:02:55,300 Wir können tatsächlich nur noch es ist eine Kette so sein. 59 00:02:55,300 --> 00:02:58,350 Auch hier, wie Sie vielleicht erwarten, alle diese Schenkel gegenseitig ausschließen. 60 00:02:58,350 --> 00:03:00,750 Sie können immer nur gehen auf eine von der Branche. 61 00:03:00,750 --> 00:03:02,270 Wenn dies wahr ist. 62 00:03:02,270 --> 00:03:03,930 Andernfalls, wenn dies wahr ist. 63 00:03:03,930 --> 00:03:05,700 Andernfalls, wenn dies wahr ist. 64 00:03:05,700 --> 00:03:07,120 Ansonsten tun. 65 00:03:07,120 --> 00:03:11,010 So alle vier Niederlassungen in diese Beispiel gegenseitig ausschließen. 66 00:03:11,010 --> 00:03:14,900 Es ist eine if-else-if-else-Kette. 67 00:03:14,900 --> 00:03:17,580 >> Es ist zwar möglich, und manchmal sehr nützlich, 68 00:03:17,580 --> 00:03:20,950 um eine Kette zu schaffen nicht gegenseitig aus Zweigen. 69 00:03:20,950 --> 00:03:24,600 In diesem Beispiel ist nur die dritte und vierten Zweig gegenseitig ausschließen. 70 00:03:24,600 --> 00:03:27,450 Es könnte sein, dass man erfüllen die erste Bedingung, 71 00:03:27,450 --> 00:03:29,396 und Sie zufriedenstellen könnte die zweite Bedingung, 72 00:03:29,396 --> 00:03:31,770 und man konnte das erfüllen dritte Zustand- wobei 73 00:03:31,770 --> 00:03:35,270 Sie gehen den ersten Zweig, dann Sie gehen einen zweiten Zweig, 74 00:03:35,270 --> 00:03:37,000 dann würden Sie gehen den dritten Zweig. 75 00:03:37,000 --> 00:03:40,450 Oder vielleicht haben Sie das erste zu erfüllen Bedingung und die zweite Bedingung, 76 00:03:40,450 --> 00:03:42,770 aber Sie nicht zufriedenstellen die dritte Bedingung. 77 00:03:42,770 --> 00:03:46,230 In diesem Fall müssen sich die ersten gehen Zweig und der zweite Zweig, 78 00:03:46,230 --> 00:03:48,040 und dann der vierte Zweig, 79 00:03:48,040 --> 00:03:51,392 >> Der Grund dafür ist, dass der andere werden nur bis zum nächsten, wenn binden. 80 00:03:51,392 --> 00:03:53,100 Also auch wenn es ein anderes hier, dass 81 00:03:53,100 --> 00:03:56,490 nicht unbedingt schaffen eine für beide Seiten exklusiven Kette von allem. 82 00:03:56,490 --> 00:04:00,890 Es ist nur der Ausdruck dort mit Boolean 83 00:04:00,890 --> 00:04:05,040 Ausdruck 3-- das ist das gegenseitig aus mit der anderen. 84 00:04:05,040 --> 00:04:07,580 So dass es möglich ist, und manchmal ganz nützlich, 85 00:04:07,580 --> 00:04:11,772 wie gesagt, um eine Kette von erstellen nicht gegenseitig aus Zweigen. 86 00:04:11,772 --> 00:04:14,230 Werfen wir einen Blick auf einen anderen Art der bedingten, die 87 00:04:14,230 --> 00:04:17,392 Sie nicht vorher in Scratch gesehen haben. 88 00:04:17,392 --> 00:04:19,369 Es gibt so etwas wie die switch-Anweisung. 89 00:04:19,369 --> 00:04:21,410 Die switch-Anweisung ist Art von ordentlich, weil es 90 00:04:21,410 --> 00:04:25,930 eine bedingte Anweisung, die erlaubt Sie unterschiedliche Fälle geben, 91 00:04:25,930 --> 00:04:28,926 anstatt sich auf Boolean Ausdrücke, um Entscheidungen für Sie treffen. 92 00:04:28,926 --> 00:04:31,050 So zum Beispiel, sagen wir mal, dass ich dieses Programm, 93 00:04:31,050 --> 00:04:34,110 und ich frage den Benutzer Eingangs mir bereitzustellen. 94 00:04:34,110 --> 00:04:37,170 Also sage ich, int x = Holen Int () und wenn Sie nicht doch vertraut, 95 00:04:37,170 --> 00:04:40,190 bekommen int ist eine Funktion, ist auch in der CS50-Bibliothek enthalten, 96 00:04:40,190 --> 00:04:44,610 also, wenn Sie CS50.H # include müssen Sie Zugriff auf Int (Get) und alle seine 97 00:04:44,610 --> 00:04:46,840 cousins-- GetFloat, GetString, und so weiter. 98 00:04:46,840 --> 00:04:52,590 Im Grunde eine Get-Funktion für jeden Datentyp, die wir bereits besprochen haben. 99 00:04:52,590 --> 00:04:53,970 >> So Int x gleich getint. 100 00:04:53,970 --> 00:04:56,390 Im Grunde, was passiert ist Ich bin an der Klemme. 101 00:04:56,390 --> 00:04:58,790 Ich frage den Benutzer auf, geben Sie eine Zahl ein. 102 00:04:58,790 --> 00:05:02,300 >> Und hier bin ich Schalt was ich tue, je nachdem, 103 00:05:02,300 --> 00:05:05,060 auf das, was der Benutzer an der Eingabeaufforderung eingegeben. 104 00:05:05,060 --> 00:05:09,147 Also, wenn sie einen eingegeben haben, zu drucken ich ein. 105 00:05:09,147 --> 00:05:09,855 Und dann habe ich zu brechen. 106 00:05:09,855 --> 00:05:12,590 107 00:05:12,590 --> 00:05:15,510 Wenn sie zwei eingeben, ausdrucken ich zwei. 108 00:05:15,510 --> 00:05:16,690 Und dann habe ich zu brechen. 109 00:05:16,690 --> 00:05:19,060 Es ist wichtig, Pause zwischen jeweils 110 00:05:19,060 --> 00:05:20,890 denn sonst werden Sie durch fallen. 111 00:05:20,890 --> 00:05:23,380 Also, wenn ich hatte keine Pausen gibt, und der Benutzer 112 00:05:23,380 --> 00:05:31,380 typisierte ein, was passieren würde, ist es wäre eine, zwei, drei zu drucken, sorry. 113 00:05:31,380 --> 00:05:33,099 Das ist irgendwie ein merkwürdiges Verhalten, nicht wahr? 114 00:05:33,099 --> 00:05:33,890 Man könnte so denken. 115 00:05:33,890 --> 00:05:36,480 Aber es gibt tatsächlich einige Fälle, in denen dies könnte eine ziemlich nützliche Sache sein. 116 00:05:36,480 --> 00:05:39,730 Also hier ist ein weiteres Beispiel für einen Schalter Aussage, wo ich die Pausen auslassen. 117 00:05:39,730 --> 00:05:42,030 Aber ich tue es mit Absicht. 118 00:05:42,030 --> 00:05:43,030 >> Also, was passiert hier? 119 00:05:43,030 --> 00:05:43,821 Denken Sie für eine Sekunde. 120 00:05:43,821 --> 00:05:45,960 Sie möchten vielleicht sogar, um das Video anzuhalten. 121 00:05:45,960 --> 00:05:48,230 >> Was hier passiert, wenn Der Benutzer gibt vier? 122 00:05:48,230 --> 00:05:51,190 123 00:05:51,190 --> 00:05:53,860 Also habe ich den Benutzer zur Eingabe aufgefordert. 124 00:05:53,860 --> 00:05:56,560 Und sie stellen den Wert 4. 125 00:05:56,560 --> 00:05:59,545 Was gedruckt wird, wenn ich das tun? 126 00:05:59,545 --> 00:06:02,170 Auf der vorherigen Folie, gab es Pausen zwischen allen Fällen. 127 00:06:02,170 --> 00:06:04,750 Und so es wäre einfach Drucken Vier und dann aufhören. 128 00:06:04,750 --> 00:06:06,610 Aber in diesem Fall wird es nicht. 129 00:06:06,610 --> 00:06:10,700 Was passiert, ist, dass Sie wird durch jeweils fallen. 130 00:06:10,700 --> 00:06:14,890 >> Also in diesem Fall habe ich meine Fällen organisiert derart, dass, wenn der Benutzer tippt 4, 131 00:06:14,890 --> 00:06:20,070 Ich werde zu drucken vier, drei, zwei, eins, starten sie weg. 132 00:06:20,070 --> 00:06:22,780 Und wenn sie getippt 5, würde ich beginnen um fünf und das gleiche tun. 133 00:06:22,780 --> 00:06:26,410 Wenn sie eingetippt 1, würde ich nur tun, ein, starten sie weg. 134 00:06:26,410 --> 00:06:28,715 >> Also in diesem Fall, ich bin mit ein Schalter Art geschickt, so 135 00:06:28,715 --> 00:06:30,804 dass ich die Absicht, fallen durch alle Fälle. 136 00:06:30,804 --> 00:06:33,720 Aber in der Regel sind Sie wahrscheinlich werde wollen zwischen allen von ihnen zu brechen, 137 00:06:33,720 --> 00:06:36,090 es sei denn, Sie eine Situation haben, wie dieser, wo du bist 138 00:06:36,090 --> 00:06:40,081 Art der Nutzung der Tatsache, dass Sie fallen durch die Fälle ohne Pause. 139 00:06:40,081 --> 00:06:42,830 Also das ist der zweite der Haupt Arten von bedingten Anweisungen. 140 00:06:42,830 --> 00:06:47,139 Die letzte davon ist:? Also ich haben zwei Schnipsel von C-Code hier. 141 00:06:47,139 --> 00:06:48,680 Eine auf der linken und eine auf der rechten Seite. 142 00:06:48,680 --> 00:06:52,330 Die auf der linken Seite sollte wahrscheinlich ziemlich vertraut sein. 143 00:06:52,330 --> 00:06:55,110 >> Ich habe Int x. 144 00:06:55,110 --> 00:06:57,167 Und ich sollte wohl haben die Benutzer gefragt 145 00:06:57,167 --> 00:07:00,250 for-- dies sollte wohl Int x sein gleich getint, oder so ähnlich. 146 00:07:00,250 --> 00:07:03,030 147 00:07:03,030 --> 00:07:05,240 Und dann werde ich eine Entscheidung treffen. 148 00:07:05,240 --> 00:07:11,700 Wenn einige boolesche Ausdruck true zuweisen x den Wert 5. 149 00:07:11,700 --> 00:07:13,590 Andernfalls zuweisen x den Wert 6. 150 00:07:13,590 --> 00:07:16,548 >> , Dass auf der linken Seite sollte wahrscheinlich sein ziemlich vertraut aus unserer Diskussion 151 00:07:16,548 --> 00:07:18,160 Wenn der eben noch Else. 152 00:07:18,160 --> 00:07:20,535 Wären Sie überrascht sein zu wissen, daß die Linie auf der rechten 153 00:07:20,535 --> 00:07:22,310 tut genau dasselbe? 154 00:07:22,310 --> 00:07:26,140 >> So spricht man: oder manchmal genannt ternäre Operator. 155 00:07:26,140 --> 00:07:27,450 Und es ist ziemlich cool. 156 00:07:27,450 --> 00:07:29,110 Es ist in der Regel als eine niedliche Trick verwendet. 157 00:07:29,110 --> 00:07:35,777 >> Aber was es Ihnen erlaubt, zu tun ist, simuliert eine If Else mit wirklich klein, 158 00:07:35,777 --> 00:07:37,610 wirklich trivial Kurz bedingte Verzweigungen. 159 00:07:37,610 --> 00:07:41,470 Sie in der Regel nicht verwenden:? Wenn Sie hatte sechs Codezeilen zwischen jedem Satz 160 00:07:41,470 --> 00:07:42,569 von geschweiften Klammern. 161 00:07:42,569 --> 00:07:44,360 Aber wenn Sie nur sind machen eine schnelle Entscheidung, 162 00:07:44,360 --> 00:07:47,520 wenn Sie sich auf eine Sache zu tun sind oder der anderen und es ist sehr einfach, 163 00:07:47,520 --> 00:07:52,240 könnte dies ein Beispiel, wie sein tun Sie es mit: Der ternäre Operator. 164 00:07:52,240 --> 00:07:56,940 So Int x gleich Ausdruck? 165 00:07:56,940 --> 00:07:59,470 Das, was nach dem Frage Marke ist, was X-Wert 166 00:07:59,470 --> 00:08:02,690 sein wird, wenn Ausdruck wahr ist. 167 00:08:02,690 --> 00:08:05,330 >> Die Sache, nachdem die Doppelpunkt ist, was den Wert von x 168 00:08:05,330 --> 00:08:07,990 wäre, wenn der Ausdruck falsch war. 169 00:08:07,990 --> 00:08:11,510 So frage ich mich, ist der Ausdruck wahr ist? 170 00:08:11,510 --> 00:08:13,870 Falls ja, weisen Sie x den Wert 5. 171 00:08:13,870 --> 00:08:16,619 Wenn es nicht, weisen Sie x den Wert 6. 172 00:08:16,619 --> 00:08:17,410 Wieder, wie ich gesagt habe. 173 00:08:17,410 --> 00:08:18,670 Dies ist in der Regel nur ein netter Trick. 174 00:08:18,670 --> 00:08:20,430 Und manchmal, wenn Sie sich wirklich bequem mit ihm, 175 00:08:20,430 --> 00:08:22,820 Sie werden dies tun, weil es aussieht irgendwie cool in Ihren Programmen. 176 00:08:22,820 --> 00:08:25,710 Generell stelle ich es an Sie jetzt, damit Sie mit ihm vertraut sind 177 00:08:25,710 --> 00:08:26,990 wenn Sie es sehen. 178 00:08:26,990 --> 00:08:30,080 Aber sicher wissen, dass Sie nicht haben um es in Ihren Code zu schreiben. 179 00:08:30,080 --> 00:08:33,246 Aber es ist etwas zu kennen, weil Sie auf jeden Fall begegnen 180 00:08:33,246 --> 00:08:36,130 Code-Schnipsel hier und dort, wo dies: Syntax, 181 00:08:36,130 --> 00:08:39,120 Alias ​​der ternäre Operator, verwendet wird. 182 00:08:39,120 --> 00:08:40,960 >> So kurze Zusammenfassung auf welche conditionals sind, 183 00:08:40,960 --> 00:08:44,210 und was die Optionen sind verfügbar , Sie in C. Wenn Sie haben, und if-else, 184 00:08:44,210 --> 00:08:46,860 und wenn sonst, wenn, und so weiter. 185 00:08:46,860 --> 00:08:50,880 Sie können Boolesche Ausdrücke verwenden für diejenigen, die Entscheidungen zu treffen. 186 00:08:50,880 --> 00:08:53,720 >> Mit Switch-Anweisungen, die Sie verwenden diskreten Fällen Entscheidungen zu treffen. 187 00:08:53,720 --> 00:08:57,540 Sie würden sagen, speziell, wenn es eine, oder wenn es zwei oder ob es drei, 188 00:08:57,540 --> 00:09:00,870 Ich werde das tun, oder dieses Ding, oder das Ding. 189 00:09:00,870 --> 00:09:04,660 Und: können verwendet werden, zu ersetzen, sehr einfache if-else-Zweige, 190 00:09:04,660 --> 00:09:08,490 oder if-else-Ketten zu machen Ihr Code schauen ein wenig Phantasie. 191 00:09:08,490 --> 00:09:09,250 >> Ich bin Doug Lloyd. 192 00:09:09,250 --> 00:09:11,410 Und das ist CS50. 193 00:09:11,410 --> 00:09:12,959