1 00:00:00,000 --> 00:00:05,140 2 00:00:05,140 --> 00:00:05,640 V redu. 3 00:00:05,640 --> 00:00:08,330 Torej, zdaj kaj je govoril o nečem res uporabno v programming-- 4 00:00:08,330 --> 00:00:09,914 pogojni stavki. 5 00:00:09,914 --> 00:00:11,830 Torej pogojnih izrazov omogočajo programe 6 00:00:11,830 --> 00:00:14,538 za sprejemanje odločitev in se razlikuje vilice v cestnem prometu, nekaj 7 00:00:14,538 --> 00:00:17,670 Jaz namiguje, da malo prej, odvisno od vrednosti spremenljivke 8 00:00:17,670 --> 00:00:20,990 ali na podlagi katere uporabnik vhodi na programer, v ukazni vrstici, 9 00:00:20,990 --> 00:00:23,130 ali če imate poziv ali nekaj takega. 10 00:00:23,130 --> 00:00:26,690 C ima nekaj različnih načinov za izraziti pogojnih izrazov, ki 11 00:00:26,690 --> 00:00:29,911 bomo tudi včasih imenujemo pogojno podružnica v svojih programih. 12 00:00:29,911 --> 00:00:32,910 In nekateri izmed njih se bo pogled precej pozna, da vas iz nič, 13 00:00:32,910 --> 00:00:35,190 zato bomo celo vleči do drug ob drugem, samo 14 00:00:35,190 --> 00:00:38,170 lahko naredite to analogijo v tvoji glavi. 15 00:00:38,170 --> 00:00:41,250 >> Torej, if-- če je precej preprosto pogojena. 16 00:00:41,250 --> 00:00:43,560 Če se spomnite iz praske na desni strani tukaj 17 00:00:43,560 --> 00:00:50,000 si lahko izpolnite, da je šesterokotnik z modro izražanja, če miške navzdol 18 00:00:50,000 --> 00:00:53,010 ali če je x manj kot 10, ali nekaj takega. 19 00:00:53,010 --> 00:00:57,390 In nato, če je x je manjša od 10, ali če je bila miš v resnici, tla 20 00:00:57,390 --> 00:01:01,140 vse kode notranjost puzzle kos bi izvršitev. 21 00:01:01,140 --> 00:01:03,720 Vse stvari, ki ustrezajo znotraj te oblike C. 22 00:01:03,720 --> 00:01:07,200 >> Podobno imamo če je na levi strani tam. 23 00:01:07,200 --> 00:01:09,210 Če Boolove izražanja, ki sem samo z uporabo 24 00:01:09,210 --> 00:01:13,010 kot nadomestek za enega od logičnim izrazi, smo že razpravljali, 25 00:01:13,010 --> 00:01:15,240 open kodrasti naramnicami, blizu kodrasti brace. 26 00:01:15,240 --> 00:01:17,720 Torej, mislim, odprte Curly brace in zaprt kodrasti brace 27 00:01:17,720 --> 00:01:22,720 kot nekakšna analogen sendvič Učinek če bloka na desni 28 00:01:22,720 --> 00:01:24,070 iz nič. 29 00:01:24,070 --> 00:01:28,680 >> Če Boolove izražanja v če izjavi je res, 30 00:01:28,680 --> 00:01:30,900 nato vse vrstic kode med zavitimi oklepaji 31 00:01:30,900 --> 00:01:33,870 se bodo izvajale, da bi od vrha do dna. 32 00:01:33,870 --> 00:01:35,700 Če Boolove izražanja je napačna, bomo 33 00:01:35,700 --> 00:01:38,610 preskočiti vsega vmes so zaviti oklepaji, ker smo le 34 00:01:38,610 --> 00:01:44,570 želim iti dol, da se vilice v cestnem prometu če je logični izraz res. 35 00:01:44,570 --> 00:01:48,540 >> Mi lahko to en korak nadalje, če drugje. 36 00:01:48,540 --> 00:01:50,820 Torej, to Scratch blok precej podoben tistemu 37 00:01:50,820 --> 00:01:55,884 smo videli samo sekundo, razen to traja dve različni poti, ki temeljijo 38 00:01:55,884 --> 00:01:56,550 o tem, kaj se dogaja. 39 00:01:56,550 --> 00:02:00,420 Torej, če je miška navzdol, ali če je X je manj kot 10, 40 00:02:00,420 --> 00:02:04,780 bomo storili vse, kar je vmes da prva vilice, da najprej C, 41 00:02:04,780 --> 00:02:08,430 >> V nasprotnem primeru, če je miška gor ali X ni manjša od 10, 42 00:02:08,430 --> 00:02:10,460 bomo storili vse, kar je v drugem nizu. 43 00:02:10,460 --> 00:02:15,010 In to je analogno temu, kar vidite Tukaj C. Če Boolove izražanja, 44 00:02:15,010 --> 00:02:17,910 narediti stvari med Prvi niz zavitimi oklepaji. 45 00:02:17,910 --> 00:02:20,550 Drugega, narediti stvari med Drugi niz zavitimi oklepaji. 46 00:02:20,550 --> 00:02:22,080 Torej, če Boolean Izraz je res, da bomo 47 00:02:22,080 --> 00:02:23,580 storiti karkoli je med prvim nizom. 48 00:02:23,580 --> 00:02:27,480 Če Logični izraz false, da bi sprožil drugega, 49 00:02:27,480 --> 00:02:30,100 in mi bi storiti vse, kar je v drugi niz zavitimi oklepaji. 50 00:02:30,100 --> 00:02:34,190 Spet zgoraj navzdol, vse linije v med oklepaji. 51 00:02:34,190 --> 00:02:38,130 >> V C, je mogoče ustvariti if-else if-ostalo verige. 52 00:02:38,130 --> 00:02:42,000 V bistvu lahko imate, če-else if-ostalo če-ostalo, če je, in tako naprej in tako naprej in tako 53 00:02:42,000 --> 00:02:42,720 o. 54 00:02:42,720 --> 00:02:44,660 V Scratch je to potrebno gnezdijo blokov. 55 00:02:44,660 --> 00:02:48,280 Dodate if-drugega, in si moral dal še eno v notranjosti drugega, 56 00:02:48,280 --> 00:02:51,110 in tako naprej, in da nimajo vrste ugnezdenih in zapleteno. 57 00:02:51,110 --> 00:02:52,450 Ampak C, nimamo za to. 58 00:02:52,450 --> 00:02:55,300 Mi lahko dejansko samo še bilo verige, kot je ta. 59 00:02:55,300 --> 00:02:58,350 Again, kot bi lahko pričakovali, vsi te panoge se med seboj izključujejo. 60 00:02:58,350 --> 00:03:00,750 Lahko le kdaj iti navzdol enega od veje. 61 00:03:00,750 --> 00:03:02,270 Če je to res. 62 00:03:02,270 --> 00:03:03,930 V nasprotnem primeru, če je to res. 63 00:03:03,930 --> 00:03:05,700 V nasprotnem primeru, če je to res. 64 00:03:05,700 --> 00:03:07,120 Sicer pa je to naredil. 65 00:03:07,120 --> 00:03:11,010 Torej, vse štiri od podružnic v to Primer se med seboj izključujejo. 66 00:03:11,010 --> 00:03:14,900 To je, če-else if-ostalo verige. 67 00:03:14,900 --> 00:03:17,580 >> Možno je sicer, in včasih zelo koristno, 68 00:03:17,580 --> 00:03:20,950 ustvariti verigo ne med seboj izključujejo panoge. 69 00:03:20,950 --> 00:03:24,600 V tem primeru, le tretja in četrti del se med seboj izključujejo. 70 00:03:24,600 --> 00:03:27,450 Prav bi bilo, da si lahko izpolnjujejo prvi pogoj, 71 00:03:27,450 --> 00:03:29,396 in lahko izpolnjujejo drugi pogoj, 72 00:03:29,396 --> 00:03:31,770 in bi lahko zadovoljili Tretji condition-- v tem primeru 73 00:03:31,770 --> 00:03:35,270 bi šel dol prvi podružnico, potem pa greš dol drugo vejo, 74 00:03:35,270 --> 00:03:37,000 potem bi šel dol v tretjo vejo. 75 00:03:37,000 --> 00:03:40,450 Ali morda izpolnjujejo prvi stanje in drugo stanje, 76 00:03:40,450 --> 00:03:42,770 vendar ne izpolnjujejo tretji pogoj. 77 00:03:42,770 --> 00:03:46,230 V tem primeru si šel dol prvi veja in drugi del, 78 00:03:46,230 --> 00:03:48,040 in nato četrta veja, 79 00:03:48,040 --> 00:03:51,392 >> Razlog za to je, da drug bo veže le na najbližjo če. 80 00:03:51,392 --> 00:03:53,100 Torej, čeprav obstaja drug tukaj, da 81 00:03:53,100 --> 00:03:56,490 Ni nujno ustvariti medsebojno ekskluzivni veriga vsega. 82 00:03:56,490 --> 00:04:00,890 To je samo izraz tam z logičnim 83 00:04:00,890 --> 00:04:05,040 Izraz 3--, da je izključuje z drugim. 84 00:04:05,040 --> 00:04:07,580 Torej je možno, in včasih precej koristen, 85 00:04:07,580 --> 00:04:11,772 kot sem rekel, da ustvarite verige ne izključujeta panoge. 86 00:04:11,772 --> 00:04:14,230 Oglejmo si na drugačen nekako pogojno, kar 87 00:04:14,230 --> 00:04:17,392 še niste videli prej v nič. 88 00:04:17,392 --> 00:04:19,369 Obstaja nekaj, kar ti izjava stikalo. 89 00:04:19,369 --> 00:04:21,410 Izjava stikalo nekako lepo, ker je 90 00:04:21,410 --> 00:04:25,930 pogojno izjavo, ki omogoča lahko določite različna primera, 91 00:04:25,930 --> 00:04:28,926 namesto da se opirajo na logičnim izrazi za sprejemanje odločitev za vas. 92 00:04:28,926 --> 00:04:31,050 Tako, na primer, recimo, da imam ta program, 93 00:04:31,050 --> 00:04:34,110 in jaz vprašam uporabnika da se zagotovi prispevek k meni. 94 00:04:34,110 --> 00:04:37,170 Zato pravim, int x = Get Int () in če še niste seznanjeni, 95 00:04:37,170 --> 00:04:40,190 dobili int je funkcija, ki je tudi v knjižnici CS50, 96 00:04:40,190 --> 00:04:44,610 tako da, če ste #include CS50.H boste imeli dostop do Get Int () in vsi njegovi 97 00:04:44,610 --> 00:04:46,840 cousins-- GetFloat, GetString, in tako naprej. 98 00:04:46,840 --> 00:04:52,590 V bistvu ena Get funkcijo za vsak vrsta podatkov, ki smo že razpravljali. 99 00:04:52,590 --> 00:04:53,970 >> Torej Int x enaka GetInt. 100 00:04:53,970 --> 00:04:56,390 V bistvu, kaj se dogaja je, da sem na terminalu. 101 00:04:56,390 --> 00:04:58,790 Jaz uporabnika prosi, da vnesete številko. 102 00:04:58,790 --> 00:05:02,300 >> In tukaj sem preklapljanje kaj delam, kar je odvisno 103 00:05:02,300 --> 00:05:05,060 o tem, kaj uporabnik natipkan na poziv. 104 00:05:05,060 --> 00:05:09,147 Torej, če bi vnesli enega, sem natisnete eno. 105 00:05:09,147 --> 00:05:09,855 In potem sem prekinil. 106 00:05:09,855 --> 00:05:12,590 107 00:05:12,590 --> 00:05:15,510 Če se tip dva, sem izpisal dve. 108 00:05:15,510 --> 00:05:16,690 In potem sem prekinil. 109 00:05:16,690 --> 00:05:19,060 Pomembno je, da odmor med vsakem primeru 110 00:05:19,060 --> 00:05:20,890 ker drugače boste padli skozi. 111 00:05:20,890 --> 00:05:23,380 Torej, če nisem imela vsaka odmori tam, in uporabnik 112 00:05:23,380 --> 00:05:31,380 natipkan eno, kaj bi se zgodilo, je bi natisnete eno, dve, tri, žal. 113 00:05:31,380 --> 00:05:33,099 To je nekako čudno obnašanje, kajne? 114 00:05:33,099 --> 00:05:33,890 Morda tako misliš. 115 00:05:33,890 --> 00:05:36,480 Ampak tam so dejansko nekaj primerov, kjer To je lahko zelo koristna stvar. 116 00:05:36,480 --> 00:05:39,730 Torej, tukaj je še en primer stikala Izjava kjer sem izpustiti odmori. 117 00:05:39,730 --> 00:05:42,030 Ampak sem to naredil zanalašč. 118 00:05:42,030 --> 00:05:43,030 >> Torej, kaj se dogaja tukaj? 119 00:05:43,030 --> 00:05:43,821 Pomislite za trenutek. 120 00:05:43,821 --> 00:05:45,960 Morda celo želeli, da začasno ustavite videoposnetek. 121 00:05:45,960 --> 00:05:48,230 >> Kaj se dogaja tukaj, če uporabnik vnese štiri? 122 00:05:48,230 --> 00:05:51,190 123 00:05:51,190 --> 00:05:53,860 Tako sem vprašal uporabnika za vnos. 124 00:05:53,860 --> 00:05:56,560 In zagotavljajo vrednost 4. 125 00:05:56,560 --> 00:05:59,545 Kaj dobi tiskovine, ko sem to naredil? 126 00:05:59,545 --> 00:06:02,170 Na prejšnjo stran je bilo odmori med vseh primerih. 127 00:06:02,170 --> 00:06:04,750 In tako, da bi samo tiskanje štiri in nato ustavi. 128 00:06:04,750 --> 00:06:06,610 Ampak v tem primeru, ne bo. 129 00:06:06,610 --> 00:06:10,700 Kaj se bo zgodilo, je vas bodo padli skozi vsak primer posebej. 130 00:06:10,700 --> 00:06:14,890 >> Torej, v tem primeru sem organiziral kovčke na tak način, da če uporabnik vnese 4, 131 00:06:14,890 --> 00:06:20,070 Bom natisniti štiri, tri, dva, ena, pišu off. 132 00:06:20,070 --> 00:06:22,780 In če bi vnesli 5, bi začnem ob petih in narediti isto stvar. 133 00:06:22,780 --> 00:06:26,410 Če jih vnesli 1, bi jaz pač eno, blast off. 134 00:06:26,410 --> 00:06:28,715 >> Torej, v tem primeru, sem s pomočjo stikalo nekako pametno, da 135 00:06:28,715 --> 00:06:30,804 da jaz nameravam sodijo preko vseh primerih. 136 00:06:30,804 --> 00:06:33,720 Ampak na splošno ste verjetno bo želijo, da bi prekinil med vse od njih, 137 00:06:33,720 --> 00:06:36,090 če imate stanje kot je ta, kjer ste ga 138 00:06:36,090 --> 00:06:40,081 vrsta vplivno dejstvo, da boste padejo skozi primerih brez odmora. 139 00:06:40,081 --> 00:06:42,830 Tako da je drugi izmed večjih vrsti pogojnih izkazov. 140 00:06:42,830 --> 00:06:47,139 Zadnji od katerih je: Torej imajo dve odrezke oznako C tukaj. 141 00:06:47,139 --> 00:06:48,680 Ena na levi in ​​ena na desni strani. 142 00:06:48,680 --> 00:06:52,330 Tista na levi smeli verjetno precej seznanjeni s tabo. 143 00:06:52,330 --> 00:06:55,110 >> Imam Int x. 144 00:06:55,110 --> 00:06:57,167 In jaz bi verjetno so pozvane uporabnika 145 00:06:57,167 --> 00:07:00,250 for-- to bi verjetno morali biti Int x enaka GetInt, ali nekaj takega. 146 00:07:00,250 --> 00:07:03,030 147 00:07:03,030 --> 00:07:05,240 In potem sem odločitev. 148 00:07:05,240 --> 00:07:11,700 Če nekateri Logični izraz je Res, dodelite x vrednosti 5. 149 00:07:11,700 --> 00:07:13,590 V nasprotnem primeru, dodelite x vrednost 6. 150 00:07:13,590 --> 00:07:16,548 >> Da je na levi strani bi bilo verjetno precej pozna iz naše razprave 151 00:07:16,548 --> 00:07:18,160 o Če Else pred nekaj trenutki. 152 00:07:18,160 --> 00:07:20,535 Bi bili presenečeni, da veš da črte na desni strani 153 00:07:20,535 --> 00:07:22,310 počne točno isto stvar? 154 00:07:22,310 --> 00:07:26,140 >> Torej se to imenuje? Ali včasih imenuje ternarni operator. 155 00:07:26,140 --> 00:07:27,450 In to je zelo kul. 156 00:07:27,450 --> 00:07:29,110 To se običajno uporablja kot ljubek trik. 157 00:07:29,110 --> 00:07:35,777 >> Ampak tisto, kar vam omogoča, da storiti, je, da simulirati if Else z res majhen, 158 00:07:35,777 --> 00:07:37,610 Res trivially kratko pogojni panoge. 159 00:07:37,610 --> 00:07:41,470 Vam na splošno ne bi uporabila?: Če vas je imel šest vrstic kode med vsak sklop 160 00:07:41,470 --> 00:07:42,569 od zaviti oklepaji. 161 00:07:42,569 --> 00:07:44,360 Ampak, če ste pravkar tako hitro odločitev, 162 00:07:44,360 --> 00:07:47,520 če boš naredil eno stvar ali drugo in je zelo preprost, 163 00:07:47,520 --> 00:07:52,240 to je lahko zgled, kako to storite s:? trikomponentne operaterja. 164 00:07:52,240 --> 00:07:56,940 Torej Int x enak izraz? 165 00:07:56,940 --> 00:07:59,470 Stvar po vprašanju znamka je tisto, x je vrednost 166 00:07:59,470 --> 00:08:02,690 bo, če je izraz Res. 167 00:08:02,690 --> 00:08:05,330 >> Stvar po Debelo črevo je kaj vrednost x otroška 168 00:08:05,330 --> 00:08:07,990 bi bilo, če je bil izraz napačen. 169 00:08:07,990 --> 00:08:11,510 Torej, jaz sprašujem, je izraz res? 170 00:08:11,510 --> 00:08:13,870 Če je, dodeliti x vrednosti 5. 171 00:08:13,870 --> 00:08:16,619 Če je ni, dodeliti x vrednost 6. 172 00:08:16,619 --> 00:08:17,410 Še enkrat, kot sem rekel. 173 00:08:17,410 --> 00:08:18,670 To je ponavadi samo luštna trik. 174 00:08:18,670 --> 00:08:20,430 In včasih, če boste postali res udobno z njim, 175 00:08:20,430 --> 00:08:22,820 boste to storili zato, ker je videti nekako kul v vaših programov. 176 00:08:22,820 --> 00:08:25,710 Na splošno sem ga predloži si zdaj tako, da ste seznanjeni z njo 177 00:08:25,710 --> 00:08:26,990 če ga vidite. 178 00:08:26,990 --> 00:08:30,080 Zagotovo pa veš, da nimaš da ga napišete v katerem koli kodo. 179 00:08:30,080 --> 00:08:33,246 Ampak to je nekaj, da so seznanjeni z, saj boste zagotovo naleteli 180 00:08:33,246 --> 00:08:36,130 odrezke kode tu in tam, kjer je to:? sintaksa, 181 00:08:36,130 --> 00:08:39,120 AKA ternarnega operaterja, se uporablja. 182 00:08:39,120 --> 00:08:40,960 >> Torej kratek povzetek o kaj Pogojniki so, 183 00:08:40,960 --> 00:08:44,210 in kaj so na voljo možnosti za vas v C. morate imeti, če in če-ostalo, 184 00:08:44,210 --> 00:08:46,860 in če else if, et cetera. 185 00:08:46,860 --> 00:08:50,880 Lahko uporabite Boolean izraze za tiste, ki sprejemajo odločitve. 186 00:08:50,880 --> 00:08:53,720 >> Z izjavami stikala uporabljate diskretne primeri za sprejemanje odločitev. 187 00:08:53,720 --> 00:08:57,540 Ti bi posebej poudarjati, če je eno, ali če je dva, ali če je tri, 188 00:08:57,540 --> 00:09:00,870 Jaz bom to storil, ali ta stvar, ali je ta stvar. 189 00:09:00,870 --> 00:09:04,660 In: lahko se uporablja za nadomestitev zelo preprosta, če-else panoge, 190 00:09:04,660 --> 00:09:08,490 ali če-else verige, da bi kodo poglej malo izmišljeno. 191 00:09:08,490 --> 00:09:09,250 >> Sem Doug Lloyd. 192 00:09:09,250 --> 00:09:11,410 In to je CS50. 193 00:09:11,410 --> 00:09:12,959