1 00:00:00,000 --> 00:00:05,140 2 00:00:05,140 --> 00:00:05,640 U redu. 3 00:00:05,640 --> 00:00:08,330 Dakle, sada ćemo govoriti o nečemu stvarno korisno u programming-- 4 00:00:08,330 --> 00:00:09,914 uvjet. 5 00:00:09,914 --> 00:00:11,830 Tako uvjetni izrazi omogućuju programe 6 00:00:11,830 --> 00:00:14,538 donositi odluke i preuzeti različite vilice u cestovnom, nešto 7 00:00:14,538 --> 00:00:17,670 Sam aludirao na nešto ranije, ovisno o vrijednosti varijabli, 8 00:00:17,670 --> 00:00:20,990 ili na temelju onoga što korisnik ulazi u programer, u naredbeni redak, 9 00:00:20,990 --> 00:00:23,130 ili ako imate upit ili nešto slično. 10 00:00:23,130 --> 00:00:26,690 C ima nekoliko različitih načina na izraziti uvjetnih izraza, koji se 11 00:00:26,690 --> 00:00:29,911 mi također ponekad nazvati uvjetna grana u svoje programe. 12 00:00:29,911 --> 00:00:32,910 A neki od njih idu gledati prilično upoznat s tobom od nule, 13 00:00:32,910 --> 00:00:35,190 pa čak ćete ih povući se rame uz rame, samo 14 00:00:35,190 --> 00:00:38,170 možete učiniti da analogiju u glavi. 15 00:00:38,170 --> 00:00:41,250 >> Dakle, if-- ako je lijepa Jednostavan uvjetno. 16 00:00:41,250 --> 00:00:43,560 Ako se sjećate iz ogrebotine na desnoj ovdje 17 00:00:43,560 --> 00:00:50,000 mogli ispuniti to je šesterokut s plavim izražavanja ako miš dolje 18 00:00:50,000 --> 00:00:53,010 ili ako je x manja od 10, ili nešto slično. 19 00:00:53,010 --> 00:00:57,390 I tada, ako je x je manje od 10, ili ako je miš u stvari, prema dolje, 20 00:00:57,390 --> 00:01:01,140 sve koda unutrašnjosti zagonetka komad će izvršiti. 21 00:01:01,140 --> 00:01:03,720 Sve stvari koje stanu unutar tog C oblika. 22 00:01:03,720 --> 00:01:07,200 >> Isto tako, imamo ako je na lijevoj tamo. 23 00:01:07,200 --> 00:01:09,210 Ako Boolean izraza, što sam upravo pomoću 24 00:01:09,210 --> 00:01:13,010 kao zamjena za jedan od boolean Izrazi smo ranije raspravljali, 25 00:01:13,010 --> 00:01:15,240 otvoreni kovrčava braće, u neposrednoj blizini kovrčava braće. 26 00:01:15,240 --> 00:01:17,720 Zato mislim otvorenog kovrčava braće i zatvorena kovrčave vitice 27 00:01:17,720 --> 00:01:22,720 kao svojevrsni analogan sendvič učinak ako blok na desnoj 28 00:01:22,720 --> 00:01:24,070 od nule. 29 00:01:24,070 --> 00:01:28,680 >> Ako je logički izraz u ako izjavi je istina, 30 00:01:28,680 --> 00:01:30,900 onda sve linije koda između vitičastih zagrada 31 00:01:30,900 --> 00:01:33,870 će izvršiti kako bi od vrha do dna. 32 00:01:33,870 --> 00:01:35,700 Ako je logički izraz je lažna, mi ćemo 33 00:01:35,700 --> 00:01:38,610 preskočiti sve između u vitičastim zagradama, jer mi samo 34 00:01:38,610 --> 00:01:44,570 želim ići dolje da vilicu na cesti ako je logički izraz istinit. 35 00:01:44,570 --> 00:01:48,540 >> Možemo uzeti ovaj korak dalje s ako je ostalo. 36 00:01:48,540 --> 00:01:50,820 Dakle, ovo Scratch blok prilično sličan onom 37 00:01:50,820 --> 00:01:55,884 vidjeli smo samo sekundu prije, osim to traje dvije različite staze temelju 38 00:01:55,884 --> 00:01:56,550 na ono što se događa. 39 00:01:56,550 --> 00:02:00,420 Dakle, ako je miš bio dolje, ili ako x je manje od 10, 40 00:02:00,420 --> 00:02:04,780 mi ćemo učiniti sve što je između da prva vilica, da prvo C, 41 00:02:04,780 --> 00:02:08,430 >> Inače, ako je miš gore, ili X nije manji od 10, 42 00:02:08,430 --> 00:02:10,460 mi ćemo učiniti sve što je u drugom setu. 43 00:02:10,460 --> 00:02:15,010 I to je analogno ono što vidite Ovdje C. Ako Boolean izraza, 44 00:02:15,010 --> 00:02:17,910 obaviti stvari između Prvi set vitičastih zagrada. 45 00:02:17,910 --> 00:02:20,550 Drugo, učiniti stvari između Drugi set vitičastih zagrada. 46 00:02:20,550 --> 00:02:22,080 Dakle, ako je logička Izraz je istina, mi ćemo 47 00:02:22,080 --> 00:02:23,580 učiniti sve što je između prvog seta. 48 00:02:23,580 --> 00:02:27,480 Ako je logički izraz je netočno, koja bi potaknula drugo, 49 00:02:27,480 --> 00:02:30,100 a mi bi učiniti sve što je u drugi set vitičastih zagrada. 50 00:02:30,100 --> 00:02:34,190 Opet, od vrha do dna, sve redovi između zagrada. 51 00:02:34,190 --> 00:02:38,130 >> U C, to je moguće stvoriti if-else if-else lanac. 52 00:02:38,130 --> 00:02:42,000 Zapravo možete imati ako-else if-else ako-drugo, ako je, i tako dalje i tako dalje i tako 53 00:02:42,000 --> 00:02:42,720 o. 54 00:02:42,720 --> 00:02:44,660 U nule, to zahtijeva gnijezde blokova. 55 00:02:44,660 --> 00:02:48,280 Dodate li-drugi, i vama je da stavi još jedan unutar drugog, 56 00:02:48,280 --> 00:02:51,110 i tako dalje, i to je dobio vrsta ugniježđena i komplicirano. 57 00:02:51,110 --> 00:02:52,450 Ali C, ne morate to učiniti. 58 00:02:52,450 --> 00:02:55,300 Mi zapravo može samo bilo lanac ovako. 59 00:02:55,300 --> 00:02:58,350 Opet, kao što ste mogli očekivati, sve ove grane se međusobno isključuju. 60 00:02:58,350 --> 00:03:00,750 Možete samo ikad ići niz jednu od grana. 61 00:03:00,750 --> 00:03:02,270 Ako je to istina. 62 00:03:02,270 --> 00:03:03,930 Inače, ako je to istina. 63 00:03:03,930 --> 00:03:05,700 Inače, ako je to istina. 64 00:03:05,700 --> 00:03:07,120 Inače, to učiniti. 65 00:03:07,120 --> 00:03:11,010 Dakle, sve četiri grane u ovom Primjer se međusobno isključuju. 66 00:03:11,010 --> 00:03:14,900 To je, ako-else if-else lanac. 67 00:03:14,900 --> 00:03:17,580 >> Moguće je ipak, a ponekad i vrlo korisno, 68 00:03:17,580 --> 00:03:20,950 stvoriti lanac ne međusobno isključiva grana. 69 00:03:20,950 --> 00:03:24,600 U ovom slučaju, i treći četvrti grane se međusobno isključuju. 70 00:03:24,600 --> 00:03:27,450 Moglo bi biti da bi mogao zadovoljiti prvi uvjet, 71 00:03:27,450 --> 00:03:29,396 i ti mogao zadovoljiti drugi uvjet, 72 00:03:29,396 --> 00:03:31,770 i ti mogao zadovoljiti Treći condition-- u kojem slučaju 73 00:03:31,770 --> 00:03:35,270 što će ići dolje prvu podružnicu, onda ići dolje drugu granu, 74 00:03:35,270 --> 00:03:37,000 onda bi ići dolje treću granu. 75 00:03:37,000 --> 00:03:40,450 Ili možda zadovoljiti prvi stanje, a drugi uvjet, 76 00:03:40,450 --> 00:03:42,770 ali ne zadovoljavaju treći uvjet. 77 00:03:42,770 --> 00:03:46,230 U tom slučaju ići dolje prvi grana i druga grana, 78 00:03:46,230 --> 00:03:48,040 a zatim četvrti grana, 79 00:03:48,040 --> 00:03:51,392 >> Razlog za to je da se drugi će se vezati samo najbliži, ako. 80 00:03:51,392 --> 00:03:53,100 Dakle, iako postoji drugi ovdje, da 81 00:03:53,100 --> 00:03:56,490 ne mora nužno stvoriti međusobno ekskluzivni lanac svega. 82 00:03:56,490 --> 00:04:00,890 To je samo izraz tamo s boolean 83 00:04:00,890 --> 00:04:05,040 Izraz 3-- to je međusobno isključuju s drugim. 84 00:04:05,040 --> 00:04:07,580 Dakle, to je moguće, i ponekad vrlo korisno, 85 00:04:07,580 --> 00:04:11,772 kao što sam rekao, stvoriti lanac međusobno ne isključuju grane. 86 00:04:11,772 --> 00:04:14,230 Uzmimo pogled na drugačiji vrsta uvjetno, što 87 00:04:14,230 --> 00:04:17,392 niste vidjeli prije u nule. 88 00:04:17,392 --> 00:04:19,369 Postoji nešto što se zove izjava prekidač. 89 00:04:19,369 --> 00:04:21,410 Izjava prekidač vrsta uredan jer je 90 00:04:21,410 --> 00:04:25,930 Uvjetna naredba koja omogućuje da odredite različite slučajeve, 91 00:04:25,930 --> 00:04:28,926 umjesto oslanjajući se na Boolean Izrazi za donošenje odluka za vas. 92 00:04:28,926 --> 00:04:31,050 Tako, na primjer, recimo da imam ovaj program, 93 00:04:31,050 --> 00:04:34,110 i ja tražim korisnika osigurati ulaz za mene. 94 00:04:34,110 --> 00:04:37,170 Zato kažem, int x = Get Int (), a ako još niste upoznati, 95 00:04:37,170 --> 00:04:40,190 dobili int je funkcija koja je Također uključeni u CS50 knjižnici, 96 00:04:40,190 --> 00:04:44,610 pa ako #include CS50.H ćete imati pristup Get Int () i sve njegove 97 00:04:44,610 --> 00:04:46,840 cousins-- GetFloat, GetString, i tako dalje. 98 00:04:46,840 --> 00:04:52,590 Uglavnom on dobiti funkciju za svaki Vrsta podataka koje smo već razgovarali. 99 00:04:52,590 --> 00:04:53,970 >> Dakle Int x jednaka GetInt. 100 00:04:53,970 --> 00:04:56,390 Uglavnom ono što se događa je sam na terminalu. 101 00:04:56,390 --> 00:04:58,790 Tražim korisniku upisati broj. 102 00:04:58,790 --> 00:05:02,300 >> I ovdje sam prebacivanje što radim, ovisno 103 00:05:02,300 --> 00:05:05,060 na ono što korisnik upisali u retku. 104 00:05:05,060 --> 00:05:09,147 Dakle, ako su upisali jednu, ja ispisati jedan. 105 00:05:09,147 --> 00:05:09,855 A onda sam se slomiti. 106 00:05:09,855 --> 00:05:12,590 107 00:05:12,590 --> 00:05:15,510 Ako su dva tipa, ja ispisati dva. 108 00:05:15,510 --> 00:05:16,690 A onda sam se slomiti. 109 00:05:16,690 --> 00:05:19,060 Važno je razbiti između svakog slučaja 110 00:05:19,060 --> 00:05:20,890 jer inače ćete pasti preko. 111 00:05:20,890 --> 00:05:23,380 Dakle, ako nisam imao bilo odmor tamo, a korisnik 112 00:05:23,380 --> 00:05:31,380 upisali jedan, što će se dogoditi je to će ispisati jedan, dva, tri, ispričavam se. 113 00:05:31,380 --> 00:05:33,099 To je vrsta čudno ponašanje, zar ne? 114 00:05:33,099 --> 00:05:33,890 Možda mislite kako. 115 00:05:33,890 --> 00:05:36,480 No, postoje neki slučajevi u kojima zapravo to može biti prilično korisna stvar. 116 00:05:36,480 --> 00:05:39,730 Dakle, ovdje je još jedan primjer prekidača Izjava gdje sam izostaviti pauze. 117 00:05:39,730 --> 00:05:42,030 Ali ja to namjerno. 118 00:05:42,030 --> 00:05:43,030 >> Dakle, ono što se događa ovdje? 119 00:05:43,030 --> 00:05:43,821 Razmislite na trenutak. 120 00:05:43,821 --> 00:05:45,960 Vi svibanj čak želite pauzirati video. 121 00:05:45,960 --> 00:05:48,230 >> Što se događa ovdje ako vrste korisničkih četiri? 122 00:05:48,230 --> 00:05:51,190 123 00:05:51,190 --> 00:05:53,860 Pa sam pitao korisniku za unos. 124 00:05:53,860 --> 00:05:56,560 I oni daju vrijednost 4. 125 00:05:56,560 --> 00:05:59,545 Što dobiva tiskani kad sam to učiniti? 126 00:05:59,545 --> 00:06:02,170 Na prethodnu stranicu, bilo je pauze između svih slučajeva. 127 00:06:02,170 --> 00:06:04,750 I tako to bi samo ispis četiri i onda prestati. 128 00:06:04,750 --> 00:06:06,610 No, u ovom slučaju, to neće. 129 00:06:06,610 --> 00:06:10,700 Što će se dogoditi vas će pasti kroz svaki slučaj. 130 00:06:10,700 --> 00:06:14,890 >> Tako je u ovom slučaju sam organizirao svoje slučajeve na takav način da, ako korisnik upiše 4, 131 00:06:14,890 --> 00:06:20,070 Ja ću ispisati četiri, tri, dva, jedan, poletjeti. 132 00:06:20,070 --> 00:06:22,780 A ako su upisali 5, ja bih početi u pet i učiniti istu stvar. 133 00:06:22,780 --> 00:06:26,410 Ako su upisali 1, bih samo učiniti jedan, blast off. 134 00:06:26,410 --> 00:06:28,715 >> Dakle, u ovom slučaju, ja sam koristeći prekidač vrsta pametno tako 135 00:06:28,715 --> 00:06:30,804 da ja ne namjeravam pasti kroz sve slučajeve. 136 00:06:30,804 --> 00:06:33,720 Ali općenito vjerojatno ste ti žele razbiti između svih njih, 137 00:06:33,720 --> 00:06:36,090 osim ako imate situaciju poput ove gdje ste 138 00:06:36,090 --> 00:06:40,081 vrsta utjecati na činjenicu da ćete pasti kroz slučajeva bez pauze. 139 00:06:40,081 --> 00:06:42,830 Dakle, to je drugi od glavnih vrste uvjetnih izjava. 140 00:06:42,830 --> 00:06:47,139 Posljednje što je:? Pa ja imaju dva isječka C kod ovdje. 141 00:06:47,139 --> 00:06:48,680 Jedan na lijevoj strani i jedan na desnoj strani. 142 00:06:48,680 --> 00:06:52,330 Onaj s lijeve strane trebale vjerojatno biti prilično upoznat s tobom. 143 00:06:52,330 --> 00:06:55,110 >> Imam Int x. 144 00:06:55,110 --> 00:06:57,167 I vjerojatno bi trebao su upitani korisnika 145 00:06:57,167 --> 00:07:00,250 for-- to vjerojatno trebao biti Int x jednako GetInt, ili nešto slično. 146 00:07:00,250 --> 00:07:03,030 147 00:07:03,030 --> 00:07:05,240 A onda sam donošenja odluke. 148 00:07:05,240 --> 00:07:11,700 Ako neki logički izraz je istina, dodijeliti x vrijednosti 5. 149 00:07:11,700 --> 00:07:13,590 Inače, dodijeliti x vrijednosti 6. 150 00:07:13,590 --> 00:07:16,548 >> To na lijevoj strani, vjerojatno bi trebao biti prilično upoznati s naše rasprave 151 00:07:16,548 --> 00:07:18,160 Ako od Inače samo trenutak prije. 152 00:07:18,160 --> 00:07:20,535 Biste li biti iznenađeni da znaju da crte na desnoj 153 00:07:20,535 --> 00:07:22,310 ne točno istu stvar? 154 00:07:22,310 --> 00:07:26,140 >> Dakle, to se zove:? Ili ponekad zove ternarna operatora. 155 00:07:26,140 --> 00:07:27,450 I to je prilično cool. 156 00:07:27,450 --> 00:07:29,110 Obično se koristi kao slatka trik. 157 00:07:29,110 --> 00:07:35,777 >> No, ono što vam omogućuje da učinite je da se simuliraju IF drugi s stvarno mali, 158 00:07:35,777 --> 00:07:37,610 stvarno trivijalno kratki uvjetne grane. 159 00:07:37,610 --> 00:07:41,470 Vi obično ne bi koristili: ako vas imao šest linija koda između svakog seta 160 00:07:41,470 --> 00:07:42,569 od vitičastih zagrada. 161 00:07:42,569 --> 00:07:44,360 Ali, ako ste samo stvaranje brzu odluku, 162 00:07:44,360 --> 00:07:47,520 ako ste idući u obaviti jednu stvar ili drugo, a to je vrlo jednostavan, 163 00:07:47,520 --> 00:07:52,240 to može biti primjer kako to su:? ternarnog operatora. 164 00:07:52,240 --> 00:07:56,940 Dakle Int x jednak izraz? 165 00:07:56,940 --> 00:07:59,470 Stvar je nakon pitanja Mark je ono x je vrijednost 166 00:07:59,470 --> 00:08:02,690 će se, ako je izraz istinit. 167 00:08:02,690 --> 00:08:05,330 >> Stvar nakon kolona je ono što X-vrijednost 168 00:08:05,330 --> 00:08:07,990 bi bilo ako je izražavanje neistinito. 169 00:08:07,990 --> 00:08:11,510 Tako sam se pitao, je izraz istina? 170 00:08:11,510 --> 00:08:13,870 Ako je, dodijeliti x vrijednosti 5. 171 00:08:13,870 --> 00:08:16,619 Ako to nije, dodijeliti x vrijednosti 6. 172 00:08:16,619 --> 00:08:17,410 Opet, kao što sam rekao. 173 00:08:17,410 --> 00:08:18,670 To je obično samo slatka trik. 174 00:08:18,670 --> 00:08:20,430 A ponekad, ako ste postali stvarno ugodno s njim, 175 00:08:20,430 --> 00:08:22,820 ćete to učiniti, jer to izgleda vrsta cool u svoje programe. 176 00:08:22,820 --> 00:08:25,710 Općenito sam ga predstaviti na sada, tako da ste upoznati s njom 177 00:08:25,710 --> 00:08:26,990 ako ga vidite. 178 00:08:26,990 --> 00:08:30,080 Ali sigurno znam da ne morate da ga pisati u bilo kojem kodu. 179 00:08:30,080 --> 00:08:33,246 Ali, to je nešto što bi se upoznati s, jer sigurno ćete naići na 180 00:08:33,246 --> 00:08:36,130 dijelovi koda i ovdje tamo gdje se to? sintaksa, 181 00:08:36,130 --> 00:08:39,120 AKA ternarnog operatera, koristi. 182 00:08:39,120 --> 00:08:40,960 >> Dakle, kratki sažetak na što uvjetne su, 183 00:08:40,960 --> 00:08:44,210 i što su dostupne opcije vama u C. Možete imati ako te ako-else, 184 00:08:44,210 --> 00:08:46,860 i ako se još ako i tako dalje. 185 00:08:46,860 --> 00:08:50,880 Možete koristiti Boolean izraza za one koji donose odluke. 186 00:08:50,880 --> 00:08:53,720 >> S prekidačem izjavama koristite diskretne slučajevima za donošenje odluka. 187 00:08:53,720 --> 00:08:57,540 Ti bi konkretno reći, ako je to jedan, ili ako je to dva, ili ako je to tri, 188 00:08:57,540 --> 00:09:00,870 Ja ću učiniti nešto takvo, ili ova stvar ili ova stvar. 189 00:09:00,870 --> 00:09:04,660 A: može se koristiti za zamjenu vrlo jednostavna, ako-else grane, 190 00:09:04,660 --> 00:09:08,490 ili ako-else lanci napraviti Vaš broj izgleda malo fancy. 191 00:09:08,490 --> 00:09:09,250 >> Ja sam Doug Lloyd. 192 00:09:09,250 --> 00:09:11,410 A to je CS50. 193 00:09:11,410 --> 00:09:12,959