1 00:00:00,000 --> 00:00:05,140 2 00:00:05,140 --> 00:00:05,640 Dobre. 3 00:00:05,640 --> 00:00:08,330 Takže teraz poďme hovoriť o niečom naozaj užitočné v programming-- 4 00:00:08,330 --> 00:00:09,914 podmienené príkazy. 5 00:00:09,914 --> 00:00:11,830 Tak podmienené výrazy umožňujú programy 6 00:00:11,830 --> 00:00:14,538 robiť rozhodnutia a majú rôzne vidličky na ceste, niečo 7 00:00:14,538 --> 00:00:17,670 Spomínal som sa trochu skôr, v závislosti na hodnotách premenných, 8 00:00:17,670 --> 00:00:20,990 alebo na základe toho, čo užívateľ zadá na programátor, na príkazovom riadku, 9 00:00:20,990 --> 00:00:23,130 alebo ak máte dotaz alebo niečo také. 10 00:00:23,130 --> 00:00:26,690 C má niekoľko rôznych spôsobov, ako expresné podmienené výrazy, ktoré 11 00:00:26,690 --> 00:00:29,911 budeme tiež niekedy sa nazývajú Podmienené vetvenia vo svojich programoch. 12 00:00:29,911 --> 00:00:32,910 A niektoré z nich sú bude vyzerať docela poznáte od nuly, 13 00:00:32,910 --> 00:00:35,190 takže budeme im dokonca čapovať up vedľa seba, len 14 00:00:35,190 --> 00:00:38,170 môžete robiť, že analógiu vo vašej hlave. 15 00:00:38,170 --> 00:00:41,250 >> Takže, if-- ak je celkom jednoduché podmienené. 16 00:00:41,250 --> 00:00:43,560 Ak si spomínate z poškriabaniu na pravej strane tu 17 00:00:43,560 --> 00:00:50,000 ste mohli vyplniť, že je šesťhran s modrým výrazom, pokiaľ myš dole 18 00:00:50,000 --> 00:00:53,010 alebo ak je x menšie ako 10, alebo niečo také. 19 00:00:53,010 --> 00:00:57,390 A potom, ak x je menšia ako 10, alebo v prípade, že myš bola v skutočnosti, dole, 20 00:00:57,390 --> 00:01:01,140 všetky kód vnútornej strane skladačky by sa spustiť. 21 00:01:01,140 --> 00:01:03,720 Všetky tie veci, ktoré sa zmestili v tej C tvare. 22 00:01:03,720 --> 00:01:07,200 >> Podobne, máme pokiaľ je na tam vľavo. 23 00:01:07,200 --> 00:01:09,210 Ak je logický výraz, čo som len pomocou 24 00:01:09,210 --> 00:01:13,010 ako náhrada za jednu booleovské výrazy skôr sme diskutovali, 25 00:01:13,010 --> 00:01:15,240 open zložená zátvorka, v jeho blízkosti je zložená zátvorka. 26 00:01:15,240 --> 00:01:17,720 Takže myslíte, že otvorené kučeravé vzpera a uzavreté zložená zátvorka 27 00:01:17,720 --> 00:01:22,720 ako druh analogický s sendvič účinok, ak bloku na pravej strane 28 00:01:22,720 --> 00:01:24,070 od nuly. 29 00:01:24,070 --> 00:01:28,680 >> Ak logický výraz v if je pravda, 30 00:01:28,680 --> 00:01:30,900 potom všetky riadky kódu Medzi zloženými zátvorkami 31 00:01:30,900 --> 00:01:33,870 sa bude vykonávať v poradí od zhora nadol. 32 00:01:33,870 --> 00:01:35,700 Ak logický výraz je falošný, budeme 33 00:01:35,700 --> 00:01:38,610 preskočiť všetko medzi tým zložené zátvorky, pretože len my 34 00:01:38,610 --> 00:01:44,570 chcete ísť dole, že rázcestí ak je výraz pravdivý. 35 00:01:44,570 --> 00:01:48,540 >> Môžeme tento jeden krok Ďalej sa v prípade iného. 36 00:01:48,540 --> 00:01:50,820 Tak toto Scratch blok dosť podobná tej, 37 00:01:50,820 --> 00:01:55,884 sme videli práve pred druhou, s výnimkou to trvá dve rôzne cesty vychádzajúce 38 00:01:55,884 --> 00:01:56,550 o tom, čo sa stane. 39 00:01:56,550 --> 00:02:00,420 Takže v prípade, že myš bola dole, alebo ak X je menšia ako 10, 40 00:02:00,420 --> 00:02:04,780 urobíme všetko, čo je medzi tým že ako prvý vidlica, že najprv C., 41 00:02:04,780 --> 00:02:08,430 >> Inak, ak je myš up, alebo x nie je menšia ako 10, 42 00:02:08,430 --> 00:02:10,460 urobíme všetko, čo v druhom sete. 43 00:02:10,460 --> 00:02:15,010 A to je to analogické s čo vidíte tu C. Ak logický výraz, 44 00:02:15,010 --> 00:02:17,910 robiť veci medzi Prvá sada zložených zátvoriek. 45 00:02:17,910 --> 00:02:20,550 Else, robiť veci medzi Druhá sada zložených zátvoriek. 46 00:02:20,550 --> 00:02:22,080 Takže ak Boolean výraz je pravda, my budeme 47 00:02:22,080 --> 00:02:23,580 robiť, čo je medzi prvou sady. 48 00:02:23,580 --> 00:02:27,480 Ak je logický výraz je false, že môžu spustiť iný, 49 00:02:27,480 --> 00:02:30,100 a my by sme robiť, čo je v druhá sada zložených zátvoriek. 50 00:02:30,100 --> 00:02:34,190 Opäť platí, že zhora nadol, to všetko čiary medzi zátvorky. 51 00:02:34,190 --> 00:02:38,130 >> V jazyku C, je možné vytvoriť if-else if-else reťazec. 52 00:02:38,130 --> 00:02:42,000 V skutočnosti môžete mať if-else if-else if-inak, ak je, a tak ďalej a tak ďalej 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 vnorenia bloky. 55 00:02:44,660 --> 00:02:48,280 Pridáte if-else, a vy ste museli dať ešte jednu vnútri iného, 56 00:02:48,280 --> 00:02:51,110 a tak ďalej, a to má druh z vnorené a komplikovaná. 57 00:02:51,110 --> 00:02:52,450 Ale C, nemusíme robiť. 58 00:02:52,450 --> 00:02:55,300 Môžeme vlastne len mať to byť reťazec ako je táto. 59 00:02:55,300 --> 00:02:58,350 Opäť, ako sa dalo očakávať, všetky Tieto odbory sa navzájom vylučujú. 60 00:02:58,350 --> 00:03:00,750 Môžete len niekedy ísť po jednej pobočky. 61 00:03:00,750 --> 00:03:02,270 Ak je to pravda. 62 00:03:02,270 --> 00:03:03,930 V opačnom prípade, ak je to pravda. 63 00:03:03,930 --> 00:03:05,700 V opačnom prípade, ak je to pravda. 64 00:03:05,700 --> 00:03:07,120 V opačnom prípade to urobiť. 65 00:03:07,120 --> 00:03:11,010 Takže všetky štyri z pobočiek v tejto Príkladom sú vzájomne vylučujú. 66 00:03:11,010 --> 00:03:14,900 Je to if-else if-else reťazec. 67 00:03:14,900 --> 00:03:17,580 >> Je možné, aj keď, a niekedy veľmi užitočné, 68 00:03:17,580 --> 00:03:20,950 na vytvorenie reťazca nie je vzájomne sa vylučujúce konárov. 69 00:03:20,950 --> 00:03:24,600 V tomto príklade, iba tretie a štvrtej vetvy sa navzájom vylučujú. 70 00:03:24,600 --> 00:03:27,450 Mohlo by sa stať, že by ste mohli spĺňajú prvú podmienku, 71 00:03:27,450 --> 00:03:29,396 a tie by mohli uspokojiť druhá podmienka, 72 00:03:29,396 --> 00:03:31,770 a tie by mohli uspokojiť Tretí condition-- v takom prípade 73 00:03:31,770 --> 00:03:35,270 by si ísť dole prvá vetva, potom ísť dole druhú vetvu, 74 00:03:35,270 --> 00:03:37,000 potom by ste ísť dole tretia vetva. 75 00:03:37,000 --> 00:03:40,450 Alebo snáď uspokojiť prvý stavu, a druhý stav, 76 00:03:40,450 --> 00:03:42,770 ale nespĺňajú tretia podmienka. 77 00:03:42,770 --> 00:03:46,230 V tomto prípade musíte ísť dole ako prvý vetva a druhá vetva, 78 00:03:46,230 --> 00:03:48,040 a potom štvrtá vetva, 79 00:03:48,040 --> 00:03:51,392 >> Dôvodom pre toto je, že inak bude viazať len na najbližší, ak. 80 00:03:51,392 --> 00:03:53,100 Takže aj keď je tu else tu, že 81 00:03:53,100 --> 00:03:56,490 nevytvára nevyhnutne vzájomne Exkluzívny reťaz všetkého. 82 00:03:56,490 --> 00:04:00,890 Je to len výraz tam s Boolean 83 00:04:00,890 --> 00:04:05,040 Výraz 3-- to je vzájomne sa vylučujúce s iným. 84 00:04:05,040 --> 00:04:07,580 Tak to je možné, a niekedy celkom užitočné, 85 00:04:07,580 --> 00:04:11,772 ako som povedal, vytvoriť reťaz ktoré sa navzájom nevylučujú konárov. 86 00:04:11,772 --> 00:04:14,230 Poďme sa pozrieť na iný druh podmienený, ktorý 87 00:04:14,230 --> 00:04:17,392 ste ešte nevideli v Scratch. 88 00:04:17,392 --> 00:04:19,369 Je tu niečo, čo nazýva Príkaz switch. 89 00:04:19,369 --> 00:04:21,410 Príkaz switch je druh elegantný, pretože to je 90 00:04:21,410 --> 00:04:25,930 podmienený príkaz, ktorý umožňuje určiť rôzne prípady, 91 00:04:25,930 --> 00:04:28,926 namiesto spoliehania sa na Boolean výrazy rozhodovať za vás. 92 00:04:28,926 --> 00:04:31,050 Tak napríklad, povedzme, že mám tento program, 93 00:04:31,050 --> 00:04:34,110 a ja sa pýtam užívateľa poskytovať informácie pre mňa. 94 00:04:34,110 --> 00:04:37,170 Takže hovorím, int x = Get Int (), a ak nie ste oboznámení ešte, 95 00:04:37,170 --> 00:04:40,190 dostať int je funkcia, ktorá je tiež v knižnici CS50, 96 00:04:40,190 --> 00:04:44,610 takže ak ste #include CS50.H budete mať Prístup k nám int () a všetky jeho 97 00:04:44,610 --> 00:04:46,840 cousins-- GetFloat, GetString, a tak ďalej. 98 00:04:46,840 --> 00:04:52,590 V podstate človek Získajte funkcie pre každého dátový typ, ktorý sme už 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 podstate to, čo sa deje je, že som v termináli. 101 00:04:56,390 --> 00:04:58,790 Žiadam, aby užívateľ zadať číslo. 102 00:04:58,790 --> 00:05:02,300 >> A tu som prepínanie to, čo robím, závislosti 103 00:05:02,300 --> 00:05:05,060 na tom, čo užívateľ napísal na príkazovom riadku. 104 00:05:05,060 --> 00:05:09,147 Takže keď napísal jeden, som vytlačiť jednu. 105 00:05:09,147 --> 00:05:09,855 A potom som sa zlomiť. 106 00:05:09,855 --> 00:05:12,590 107 00:05:12,590 --> 00:05:15,510 Ak sa Druh byt, som vytlačiť dve. 108 00:05:15,510 --> 00:05:16,690 A potom som sa zlomiť. 109 00:05:16,690 --> 00:05:19,060 Je dôležité, aby zlomiť medzi každom prípade 110 00:05:19,060 --> 00:05:20,890 pretože inak budete prepadnúť. 111 00:05:20,890 --> 00:05:23,380 Takže keď som nemal akýkoľvek prestávky tam, a užívateľ 112 00:05:23,380 --> 00:05:31,380 zadaný človek, čo by sa stalo, je to by sa vytlačiť jednu, dve, tri, sorry. 113 00:05:31,380 --> 00:05:33,099 To je trochu podivné správanie, je to tak? 114 00:05:33,099 --> 00:05:33,890 Dalo by sa, že áno. 115 00:05:33,890 --> 00:05:36,480 Ale tam sú vlastne niektorých prípadoch, keď to by mohlo byť celkom užitočná vec. 116 00:05:36,480 --> 00:05:39,730 Tak tu je ďalší príklad spínače vyhlásenie, kde som vynechať prestávky. 117 00:05:39,730 --> 00:05:42,030 Ale ja som to schválne. 118 00:05:42,030 --> 00:05:43,030 >> Tak tu, čo sa stane? 119 00:05:43,030 --> 00:05:43,821 Myslíš, že na sekundu. 120 00:05:43,821 --> 00:05:45,960 Môžete dokonca chcú, aby video pozastaviť. 121 00:05:45,960 --> 00:05:48,230 >> Čo sa stane, keď sa tu užívateľ zadá štyri? 122 00:05:48,230 --> 00:05:51,190 123 00:05:51,190 --> 00:05:53,860 Takže som požiadal používateľa pre vstup. 124 00:05:53,860 --> 00:05:56,560 A poskytujú hodnotu 4. 125 00:05:56,560 --> 00:05:59,545 To, čo sa vytlačí, keď som to urobil? 126 00:05:59,545 --> 00:06:02,170 Na predchádzajúcu snímku, tam bolo prestávky medzi všetkých prípadoch. 127 00:06:02,170 --> 00:06:04,750 A tak by to jednoducho vytlačiť štyri a potom sa zastaví. 128 00:06:04,750 --> 00:06:06,610 Ale v tomto prípade, to nebude. 129 00:06:06,610 --> 00:06:10,700 Čo sa stane, je vám bude spadať cez každého prípadu. 130 00:06:10,700 --> 00:06:14,890 >> Takže v tomto prípade som zorganizoval svoje prípady takým spôsobom, že ak užívateľ zadá 4, 131 00:06:14,890 --> 00:06:20,070 Ja sa vytlačí štyri, tri, dva, jedna, odštartovať. 132 00:06:20,070 --> 00:06:22,780 A ak zadali 5, by som začať v päť, a urobiť to isté. 133 00:06:22,780 --> 00:06:26,410 Ak sa zadali 1, urobil by som to proste jedno, Blast Off. 134 00:06:26,410 --> 00:06:28,715 >> Takže v tomto prípade, som pomocou spínač druh chytro tak 135 00:06:28,715 --> 00:06:30,804 že nemám v úmysle na jeseň cez všetky prípady. 136 00:06:30,804 --> 00:06:33,720 Ale všeobecne ste pravdepodobne bude chcú rozbiť medzi všetkými z nich, 137 00:06:33,720 --> 00:06:36,090 ak máte situáciu ako je táto, kam 138 00:06:36,090 --> 00:06:40,081 druh využitie skutočnosť, že budete prepadnú prípadov bez prestávky. 139 00:06:40,081 --> 00:06:42,830 Tak to je druhá z hlavnej typy podmienené príkazy. 140 00:06:42,830 --> 00:06:47,139 Posledným z nich je :? Tak som sa majú dva úryvky C kód tu. 141 00:06:47,139 --> 00:06:48,680 Jeden na ľavej strane a jeden na pravej strane. 142 00:06:48,680 --> 00:06:52,330 Ten na ľavej strane by mal asi docela poznáte. 143 00:06:52,330 --> 00:06:55,110 >> Mám Int x. 144 00:06:55,110 --> 00:06:57,167 A ja som asi mal požiadali užívateľa 145 00:06:57,167 --> 00:07:00,250 for-- to by malo pravdepodobne Int x rovná GetInt, alebo niečo také. 146 00:07:00,250 --> 00:07:03,030 147 00:07:03,030 --> 00:07:05,240 A potom som robiť rozhodnutia. 148 00:07:05,240 --> 00:07:11,700 Ak sa niektoré logický výraz je pravda, priraďte x hodnote 5. 149 00:07:11,700 --> 00:07:13,590 V opačnom prípade, priraďte x hodnotou 6. 150 00:07:13,590 --> 00:07:16,548 >> Že na ľavej strane by pravdepodobne docela známy z našej diskusie 151 00:07:16,548 --> 00:07:18,160 z Ak Else pred chvíľou. 152 00:07:18,160 --> 00:07:20,535 Chceli by ste byť prekvapení, vedieť, že čiarou na pravej strane 153 00:07:20,535 --> 00:07:22,310 robí presne to isté? 154 00:07:22,310 --> 00:07:26,140 >> Tak tomu sa hovorí :? Alebo niekedy volal ternárnu operátor. 155 00:07:26,140 --> 00:07:27,450 A je to celkom v pohode. 156 00:07:27,450 --> 00:07:29,110 Je to zvyčajne používa ako roztomilý trik. 157 00:07:29,110 --> 00:07:35,777 >> Ale čo to vám umožní urobiť, je simulovať If Else s naozaj malé, 158 00:07:35,777 --> 00:07:37,610 Naozaj triviálne krátky podmienené vetvy. 159 00:07:37,610 --> 00:07:41,470 Tie všeobecne nebude používať :? Ak vás Mal šesť riadky kódu medzi každou sadu 160 00:07:41,470 --> 00:07:42,569 zložených zátvoriek. 161 00:07:42,569 --> 00:07:44,360 Ale ak ste len robiť rýchle rozhodnutia, 162 00:07:44,360 --> 00:07:47,520 ak budete robiť jednu vec alebo druhý, a je to veľmi jednoduché, 163 00:07:47,520 --> 00:07:52,240 toto by mohlo byť príkladom toho, ako sa to s :? ternárnu operátor. 164 00:07:52,240 --> 00:07:56,940 Takže Int x rovná sa výraz? 165 00:07:56,940 --> 00:07:59,470 Tá vec po otázke Značka je to, čo je hodnota x 166 00:07:59,470 --> 00:08:02,690 Ak bude výraz je pravdivý. 167 00:08:02,690 --> 00:08:05,330 >> Tá vec po hrubého čreva je to, čo hodnota X je 168 00:08:05,330 --> 00:08:07,990 by v prípade, že výraz bol nepravdivý. 169 00:08:07,990 --> 00:08:11,510 Takže sa pýtam sám seba, je výraz pravdivý? 170 00:08:11,510 --> 00:08:13,870 Ak je, priradiť x hodnote 5. 171 00:08:13,870 --> 00:08:16,619 Ak to tak nie je, priradiť x hodnotou 6. 172 00:08:16,619 --> 00:08:17,410 Opäť, rovnako ako som povedal. 173 00:08:17,410 --> 00:08:18,670 To je zvyčajne len roztomilý trik. 174 00:08:18,670 --> 00:08:20,430 A niekedy, keď sa stanete naozaj pohodlne s tým, 175 00:08:20,430 --> 00:08:22,820 vy to budete robiť, pretože to vyzerá, celkom fajn vo svojich programoch. 176 00:08:22,820 --> 00:08:25,710 Všeobecne som ho predloží Teraz tak, že ste oboznámení s tým 177 00:08:25,710 --> 00:08:26,990 pokiaľ ju vidieť. 178 00:08:26,990 --> 00:08:30,080 Ale iste viete, že nemáte napísať ho do žiadnej z kódu. 179 00:08:30,080 --> 00:08:33,246 Ale to je niečo, aby sa zoznámili s, pretože budete určite narazíte 180 00:08:33,246 --> 00:08:36,130 úryvky kódu tu a tam, kde táto :? syntax, 181 00:08:36,130 --> 00:08:39,120 AKA ternárnu operátor, je používaný. 182 00:08:39,120 --> 00:08:40,960 >> Tak rýchly prehľad o aké sú podmieňovací spôsob, 183 00:08:40,960 --> 00:08:44,210 a aké sú k dispozícii možnosti vám v C. Ak máte a if-else, 184 00:08:44,210 --> 00:08:46,860 a ak je else if, a tak ďalej. 185 00:08:46,860 --> 00:08:50,880 Môžete použiť booleanu pre tých, ktorí sa rozhodujú. 186 00:08:50,880 --> 00:08:53,720 >> S vyhlásenie spínač používate diskrétne prípady rozhodovať. 187 00:08:53,720 --> 00:08:57,540 Tie by sa konkrétne povedať, či je to jednu, alebo či je to dva, alebo či je to tri, 188 00:08:57,540 --> 00:09:00,870 Urobím túto vec, alebo tá vec, alebo tá vec. 189 00:09:00,870 --> 00:09:04,660 A :? Môže byť použitý na nahradenie Veľmi jednoduchý if-else vetvy, 190 00:09:04,660 --> 00:09:08,490 alebo ak-else reťaze, aby sa váš kód vyzerať trochu fantázie. 191 00:09:08,490 --> 00:09:09,250 >> Som Doug Lloyd. 192 00:09:09,250 --> 00:09:11,410 A to je CS50. 193 00:09:11,410 --> 00:09:12,959