1 00:00:00,000 --> 00:00:05,140 2 00:00:05,140 --> 00:00:05,640 Dobře. 3 00:00:05,640 --> 00:00:08,330 Takže teď pojďme mluvit o něčem opravdu užitečné v programming-- 4 00:00:08,330 --> 00:00:09,914 podmíněné příkazy. 5 00:00:09,914 --> 00:00:11,830 Tak podmíněné výrazy umožňují programy 6 00:00:11,830 --> 00:00:14,538 činit rozhodnutí a mají různé vidličky na silnici, něco 7 00:00:14,538 --> 00:00:17,670 Zmiňoval jsem se trochu dřív, v závislosti na hodnotách proměnných, 8 00:00:17,670 --> 00:00:20,990 nebo na základě toho, co uživatel zadá na programátor, na příkazovém řádku, 9 00:00:20,990 --> 00:00:23,130 nebo pokud máte dotaz nebo něco takového. 10 00:00:23,130 --> 00:00:26,690 C má několik různých způsobů, jak expresní podmíněné výrazy, které 11 00:00:26,690 --> 00:00:29,911 budeme také někdy se nazývají Podmíněné větvení ve svých programech. 12 00:00:29,911 --> 00:00:32,910 A některé z nich jsou bude vypadat docela znáte od nuly, 13 00:00:32,910 --> 00:00:35,190 takže budeme jim dokonce čepovat up vedle sebe, jen 14 00:00:35,190 --> 00:00:38,170 můžete dělat, že analogii ve vaší hlavě. 15 00:00:38,170 --> 00:00:41,250 >> Takže, if-- pokud je docela jednoduché podmíněné. 16 00:00:41,250 --> 00:00:43,560 Pokud si vzpomínáte z poškrábání na pravé straně zde 17 00:00:43,560 --> 00:00:50,000 jste mohli vyplnit, že je šestihran s modrým výrazem, pokud myš dolů 18 00:00:50,000 --> 00:00:53,010 nebo pokud je x menší než 10, nebo něco takového. 19 00:00:53,010 --> 00:00:57,390 A pak, pokud x je menší než 10, nebo v případě, že myš byla ve skutečnosti, dolů, 20 00:00:57,390 --> 00:01:01,140 všechny kód vnitřní straně skládačky by se spustit. 21 00:01:01,140 --> 00:01:03,720 Všechny ty věci, které se vešly v té C tvaru. 22 00:01:03,720 --> 00:01:07,200 >> Podobně, máme pokud je na tam vlevo. 23 00:01:07,200 --> 00:01:09,210 Pokud je logický výraz, což jsem jen pomocí 24 00:01:09,210 --> 00:01:13,010 jako náhrada za jednu booleovské výrazy dříve jsme diskutovali, 25 00:01:13,010 --> 00:01:15,240 open složená závorka, v blízkosti je složená závorka. 26 00:01:15,240 --> 00:01:17,720 Takže myslíte, že otevřené kudrnaté vzpěra a uzavřené složená závorka 27 00:01:17,720 --> 00:01:22,720 jako druh analogický s sendvič účinek, pokud bloku na pravé straně 28 00:01:22,720 --> 00:01:24,070 od nuly. 29 00:01:24,070 --> 00:01:28,680 >> Jestliže logický výraz v if je pravda, 30 00:01:28,680 --> 00:01:30,900 pak všechny řádky kódu Mezi složenými závorkami 31 00:01:30,900 --> 00:01:33,870 se bude provádět v pořadí od shora dolů. 32 00:01:33,870 --> 00:01:35,700 Jestliže logický výraz je falešný, budeme 33 00:01:35,700 --> 00:01:38,610 přeskočit všechno mezi tím složené závorky, protože jen my 34 00:01:38,610 --> 00:01:44,570 chcete jít dolů, že rozcestí pokud je výraz pravdivý. 35 00:01:44,570 --> 00:01:48,540 >> Můžeme tento jeden krok Dále se v případě jiného. 36 00:01:48,540 --> 00:01:50,820 Tak tohle Scratch blok dost podobná té, 37 00:01:50,820 --> 00:01:55,884 jsme viděli právě před druhou, s výjimkou to trvá dvě různé cesty vycházející 38 00:01:55,884 --> 00:01:56,550 o tom, co se stane. 39 00:01:56,550 --> 00:02:00,420 Takže v případě, že myš byla dole, nebo jestliže X je menší než 10, 40 00:02:00,420 --> 00:02:04,780 uděláme vše, co je mezi tím že jako první vidlice, že nejprve C., 41 00:02:04,780 --> 00:02:08,430 >> Jinak, pokud je myš up, nebo x není menší než 10, 42 00:02:08,430 --> 00:02:10,460 uděláme vše, co ve druhém setu. 43 00:02:10,460 --> 00:02:15,010 A to je to analogické s co vidíte zde C. Pokud logický výraz, 44 00:02:15,010 --> 00:02:17,910 dělat věci mezi První sada složených závorek. 45 00:02:17,910 --> 00:02:20,550 Else, dělat věci mezi Druhá sada složených závorek. 46 00:02:20,550 --> 00:02:22,080 Takže pokud Boolean výraz je pravda, my budeme 47 00:02:22,080 --> 00:02:23,580 dělat, co je mezi první sady. 48 00:02:23,580 --> 00:02:27,480 Pokud je logický výraz je false, že mohou spustit jiný, 49 00:02:27,480 --> 00:02:30,100 a my bychom dělat, co je v druhá sada složených závorek. 50 00:02:30,100 --> 00:02:34,190 Opět platí, že shora dolů, to vše čáry mezi závorky. 51 00:02:34,190 --> 00:02:38,130 >> V jazyce C, je možné vytvořit if-else if-else řetězec. 52 00:02:38,130 --> 00:02:42,000 Ve skutečnosti můžete mít if-else if-else if-jinak, je-li, a tak dále a tak dále a tak 53 00:02:42,000 --> 00:02:42,720 na. 54 00:02:42,720 --> 00:02:44,660 Scratch, to vyžaduje vnoření bloky. 55 00:02:44,660 --> 00:02:48,280 Přidáte if-else, a vy jste museli dát ještě jednu uvnitř jiného, 56 00:02:48,280 --> 00:02:51,110 a tak dále, a to má druh z vnořené a komplikovaná. 57 00:02:51,110 --> 00:02:52,450 Ale C, nemusíme dělat. 58 00:02:52,450 --> 00:02:55,300 Můžeme vlastně jen mít to být řetězec jako je tato. 59 00:02:55,300 --> 00:02:58,350 Opět, jak se dalo očekávat, všechny Tyto obory se vzájemně vylučují. 60 00:02:58,350 --> 00:03:00,750 Můžete jen někdy jít po jedné pobočky. 61 00:03:00,750 --> 00:03:02,270 Pokud je to pravda. 62 00:03:02,270 --> 00:03:03,930 V opačném případě, pokud je to pravda. 63 00:03:03,930 --> 00:03:05,700 V opačném případě, pokud je to pravda. 64 00:03:05,700 --> 00:03:07,120 V opačném případě to udělat. 65 00:03:07,120 --> 00:03:11,010 Takže všechny čtyři z poboček v této Příkladem jsou vzájemně vylučují. 66 00:03:11,010 --> 00:03:14,900 Je to if-else if-else řetězec. 67 00:03:14,900 --> 00:03:17,580 >> Je možné, i když, a někdy velmi užitečné, 68 00:03:17,580 --> 00:03:20,950 k vytvoření řetězce není vzájemně se vylučující větví. 69 00:03:20,950 --> 00:03:24,600 V tomto příkladu, pouze třetí a čtvrté větve se vzájemně vylučují. 70 00:03:24,600 --> 00:03:27,450 Mohlo by se stát, že byste mohli splňují první podmínku, 71 00:03:27,450 --> 00:03:29,396 a ty by mohly uspokojit druhá podmínka, 72 00:03:29,396 --> 00:03:31,770 a ty by mohly uspokojit Třetí condition-- v takovém případě 73 00:03:31,770 --> 00:03:35,270 bys jít dolů první větev, pak jít dolů druhou větev, 74 00:03:35,270 --> 00:03:37,000 pak byste jít dolů třetí větev. 75 00:03:37,000 --> 00:03:40,450 Nebo snad uspokojit první stavu, a druhý stav, 76 00:03:40,450 --> 00:03:42,770 ale nesplňují třetí podmínka. 77 00:03:42,770 --> 00:03:46,230 V tomto případě musíte jít dolů jako první větev a druhá větev, 78 00:03:46,230 --> 00:03:48,040 a pak čtvrtá větev, 79 00:03:48,040 --> 00:03:51,392 >> Důvodem pro toto je, že jinak bude vázat jen na nejbližší, pokud. 80 00:03:51,392 --> 00:03:53,100 Takže i když je tu else tady, že 81 00:03:53,100 --> 00:03:56,490 nevytváří nutně vzájemně Exkluzivní řetěz všeho. 82 00:03:56,490 --> 00:04:00,890 Je to jen výraz tam s Boolean 83 00:04:00,890 --> 00:04:05,040 Výraz 3-- to je vzájemně se vylučující s jiným. 84 00:04:05,040 --> 00:04:07,580 Tak to je možné, a někdy docela užitečné, 85 00:04:07,580 --> 00:04:11,772 jak jsem řekl, vytvořit řetěz které se vzájemně nevylučují větví. 86 00:04:11,772 --> 00:04:14,230 Pojďme se podívat na jiný druh podmíněný, který 87 00:04:14,230 --> 00:04:17,392 jste ještě neviděli v Scratch. 88 00:04:17,392 --> 00:04:19,369 Je tu něco, co nazývá Příkaz switch. 89 00:04:19,369 --> 00:04:21,410 Příkaz switch je druh elegantní, protože to je 90 00:04:21,410 --> 00:04:25,930 podmíněný příkaz, který umožňuje určit různé případy, 91 00:04:25,930 --> 00:04:28,926 namísto spoléhání se na Boolean výrazy rozhodovat za vás. 92 00:04:28,926 --> 00:04:31,050 Tak například, řekněme, že mám tento program, 93 00:04:31,050 --> 00:04:34,110 a já se ptám uživatele poskytovat informace pro mě. 94 00:04:34,110 --> 00:04:37,170 Takže říkám, int x = Get Int (), a pokud nejste obeznámeni ještě, 95 00:04:37,170 --> 00:04:40,190 dostat int je funkce, která je také v knihovně CS50, 96 00:04:40,190 --> 00:04:44,610 takže pokud jste #include CS50.H budete mít Přístup k nám int () a všechny jeho 97 00:04:44,610 --> 00:04:46,840 cousins-- GetFloat, GetString, a tak dále. 98 00:04:46,840 --> 00:04:52,590 V podstatě člověk Získejte funkce pro každého datový typ, který jsme již diskutovali. 99 00:04:52,590 --> 00:04:53,970 >> Takže Int x rovná GetInt. 100 00:04:53,970 --> 00:04:56,390 V podstatě to, co se děje je, že jsem v terminálu. 101 00:04:56,390 --> 00:04:58,790 Žádám, aby uživatel zadat číslo. 102 00:04:58,790 --> 00:05:02,300 >> A tady jsem přepínání to, co dělám, závislosti 103 00:05:02,300 --> 00:05:05,060 na tom, co uživatel napsal na příkazovém řádku. 104 00:05:05,060 --> 00:05:09,147 Takže když napsal jeden, jsem vytisknout jednu. 105 00:05:09,147 --> 00:05:09,855 A pak jsem se zlomit. 106 00:05:09,855 --> 00:05:12,590 107 00:05:12,590 --> 00:05:15,510 Pokud se Druh byt, jsem vytisknout dvě. 108 00:05:15,510 --> 00:05:16,690 A pak jsem se zlomit. 109 00:05:16,690 --> 00:05:19,060 Je důležité, aby zlomit mezi každém případě 110 00:05:19,060 --> 00:05:20,890 protože jinak budete propadnout. 111 00:05:20,890 --> 00:05:23,380 Takže když jsem neměl jakýkoli přestávky tam, a uživatel 112 00:05:23,380 --> 00:05:31,380 zadaný člověk, co by se stalo, je to by se vytisknout jednu, dvě, tři, sorry. 113 00:05:31,380 --> 00:05:33,099 To je trochu podivné chování, je to tak? 114 00:05:33,099 --> 00:05:33,890 Dalo by se, že ano. 115 00:05:33,890 --> 00:05:36,480 Ale tam jsou vlastně některých případech, kdy to by mohlo být docela užitečná věc. 116 00:05:36,480 --> 00:05:39,730 Tak tady je další příklad spínače prohlášení, kde jsem vynechat přestávky. 117 00:05:39,730 --> 00:05:42,030 Ale já jsem to schválně. 118 00:05:42,030 --> 00:05:43,030 >> Tak tady, co se stane? 119 00:05:43,030 --> 00:05:43,821 Myslíš, že na vteřinu. 120 00:05:43,821 --> 00:05:45,960 Můžete dokonce chtějí, aby video pozastavit. 121 00:05:45,960 --> 00:05:48,230 >> Co se stane, když se zde uživatel zadá čtyři? 122 00:05:48,230 --> 00:05:51,190 123 00:05:51,190 --> 00:05:53,860 Takže jsem požádal uživatele pro vstup. 124 00:05:53,860 --> 00:05:56,560 A poskytují hodnotu 4. 125 00:05:56,560 --> 00:05:59,545 To, co se vytiskne, když jsem to udělal? 126 00:05:59,545 --> 00:06:02,170 Na předchozí snímek, tam bylo přestávky mezi všech případech. 127 00:06:02,170 --> 00:06:04,750 A tak by to prostě vytisknout čtyři a pak se zastaví. 128 00:06:04,750 --> 00:06:06,610 Ale v tomto případě, to nebude. 129 00:06:06,610 --> 00:06:10,700 Co se stane, je vám bude spadat přes každého případu. 130 00:06:10,700 --> 00:06:14,890 >> Takže v tomto případě jsem zorganizoval své případy takovým způsobem, že pokud uživatel zadá 4, 131 00:06:14,890 --> 00:06:20,070 Já se vytiskne čtyři, tři, dva, jedna, odstartovat. 132 00:06:20,070 --> 00:06:22,780 A pokud zadali 5, bych začít v pět, a udělat to samé. 133 00:06:22,780 --> 00:06:26,410 Pokud se zadali 1, udělal bych to prostě jedno, Blast Off. 134 00:06:26,410 --> 00:06:28,715 >> Takže v tomto případě, jsem pomocí spínač druh chytře tak 135 00:06:28,715 --> 00:06:30,804 že nemám v úmyslu na podzim přes všechny případy. 136 00:06:30,804 --> 00:06:33,720 Ale obecně jste pravděpodobně bude chtějí rozbít mezi všemi z nich, 137 00:06:33,720 --> 00:06:36,090 pokud máte situaci jako je tato, kam 138 00:06:36,090 --> 00:06:40,081 druh využití skutečnost, že budete propadnou případů bez přestávky. 139 00:06:40,081 --> 00:06:42,830 Tak to je druhá z hlavní typy podmíněné příkazy. 140 00:06:42,830 --> 00:06:47,139 Posledním z nich je:? Tak jsem se mají dva úryvky C kód zde. 141 00:06:47,139 --> 00:06:48,680 Jeden na levé straně a jeden na pravé straně. 142 00:06:48,680 --> 00:06:52,330 Ten na levé straně by měl asi docela znáte. 143 00:06:52,330 --> 00:06:55,110 >> Mám Int x. 144 00:06:55,110 --> 00:06:57,167 A já jsem asi měl požádali uživatele 145 00:06:57,167 --> 00:07:00,250 for-- to by mělo pravděpodobně Int x rovná GetInt, nebo něco takového. 146 00:07:00,250 --> 00:07:03,030 147 00:07:03,030 --> 00:07:05,240 A pak jsem dělat rozhodnutí. 148 00:07:05,240 --> 00:07:11,700 Pokud se některé logický výraz je pravda, přiřaďte x hodnotě 5. 149 00:07:11,700 --> 00:07:13,590 V opačném případě, přiřaďte x hodnotou 6. 150 00:07:13,590 --> 00:07:16,548 >> Že na levé straně by pravděpodobně docela známý z naší diskuse 151 00:07:16,548 --> 00:07:18,160 z Pokud Else před chvílí. 152 00:07:18,160 --> 00:07:20,535 Chtěli byste být překvapeni, vědět, že čárou na pravé straně 153 00:07:20,535 --> 00:07:22,310 dělá přesně to samé? 154 00:07:22,310 --> 00:07:26,140 >> Tak tomu se říká:? Nebo někdy volal ternární operátor. 155 00:07:26,140 --> 00:07:27,450 A je to docela v pohodě. 156 00:07:27,450 --> 00:07:29,110 Je to obvykle používá jako roztomilý trik. 157 00:07:29,110 --> 00:07:35,777 >> Ale co to vám umožní udělat, je simulovat If Else s opravdu malé, 158 00:07:35,777 --> 00:07:37,610 Opravdu triviálně krátký podmíněné větve. 159 00:07:37,610 --> 00:07:41,470 Ty obecně nebude používat:? Pokud vás Měl šest řádky kódu mezi každou sadu 160 00:07:41,470 --> 00:07:42,569 složených závorek. 161 00:07:42,569 --> 00:07:44,360 Ale pokud jste jen dělat rychlé rozhodnutí, 162 00:07:44,360 --> 00:07:47,520 pokud budete dělat jednu věc nebo druhý, a je to velmi jednoduché, 163 00:07:47,520 --> 00:07:52,240 toto by mohlo být příkladem toho, jak se to s:? ternární operátor. 164 00:07:52,240 --> 00:07:56,940 Takže Int x rovná se výraz? 165 00:07:56,940 --> 00:07:59,470 Ta věc po otázce Značka je to, co je hodnota x 166 00:07:59,470 --> 00:08:02,690 Bude-li výraz je pravdivý. 167 00:08:02,690 --> 00:08:05,330 >> Ta věc po tlustého střeva je to, co hodnota X je 168 00:08:05,330 --> 00:08:07,990 by v případě, že výraz byl nepravdivý. 169 00:08:07,990 --> 00:08:11,510 Takže se ptám sám sebe, je výraz pravdivý? 170 00:08:11,510 --> 00:08:13,870 Pokud je, přiřadit x hodnotě 5. 171 00:08:13,870 --> 00:08:16,619 Pokud to tak není, přiřadit x hodnotou 6. 172 00:08:16,619 --> 00:08:17,410 Opět, stejně jako jsem řekl. 173 00:08:17,410 --> 00:08:18,670 To je obvykle jen roztomilý trik. 174 00:08:18,670 --> 00:08:20,430 A někdy, když se stanete opravdu pohodlně s tím, 175 00:08:20,430 --> 00:08:22,820 vy to budete dělat, protože to vypadá, docela fajn ve svých programech. 176 00:08:22,820 --> 00:08:25,710 Obecně jsem jej předloží Nyní tak, že jste obeznámeni s tím 177 00:08:25,710 --> 00:08:26,990 pokud ji vidět. 178 00:08:26,990 --> 00:08:30,080 Ale jistě víte, že nemáte napsat jej do žádné z kódu. 179 00:08:30,080 --> 00:08:33,246 Ale to je něco, aby se seznámili s, protože budete určitě narazíte 180 00:08:33,246 --> 00:08:36,130 úryvky kódu zde a tam, kde tato:? syntax, 181 00:08:36,130 --> 00:08:39,120 AKA ternární operátor, je používán. 182 00:08:39,120 --> 00:08:40,960 >> Tak rychlý přehled o jaké jsou podmiňovací způsob, 183 00:08:40,960 --> 00:08:44,210 a jaké jsou k dispozici možnosti vám v C. Máte-li a if-else, 184 00:08:44,210 --> 00:08:46,860 a je-li else if, a tak dále. 185 00:08:46,860 --> 00:08:50,880 Můžete použít logických výrazů pro ty, kteří se rozhodují. 186 00:08:50,880 --> 00:08:53,720 >> S prohlášení spínač používáte diskrétní případy rozhodovat. 187 00:08:53,720 --> 00:08:57,540 Ty by se konkrétně říci, jestli je to jednu, nebo jestli je to dva, nebo jestli je to tři, 188 00:08:57,540 --> 00:09:00,870 Udělám tuto věc, nebo ta věc, nebo ta věc. 189 00:09:00,870 --> 00:09:04,660 A:? Může být použit k nahrazení Velmi jednoduchý if-else větve, 190 00:09:04,660 --> 00:09:08,490 nebo-li-else řetězy, aby se váš kód vypadat trochu fantazie. 191 00:09:08,490 --> 00:09:09,250 >> Jsem Doug Lloyd. 192 00:09:09,250 --> 00:09:11,410 A to je CS50. 193 00:09:11,410 --> 00:09:12,959