1 00:00:00,000 --> 00:00:05,140 2 00:00:05,140 --> 00:00:05,640 Alles reg. 3 00:00:05,640 --> 00:00:08,330 So nou, laat ons praat oor iets werklik nuttig in programming-- 4 00:00:08,330 --> 00:00:09,914 voorwaardelike stellings. 5 00:00:09,914 --> 00:00:11,830 So voorwaardelike uitdrukkings toelaat dat jou programme 6 00:00:11,830 --> 00:00:14,538 om besluite te neem en verskillende vurke in die pad, iets 7 00:00:14,538 --> 00:00:17,670 Ek verwys na bietjie vroeër, afhangende van die waardes van veranderlikes, 8 00:00:17,670 --> 00:00:20,990 of op grond van wat die gebruiker insette by die programmeerder, op die opdrag lyn, 9 00:00:20,990 --> 00:00:23,130 of as jy 'n vinnige of iets soos dit. 10 00:00:23,130 --> 00:00:26,690 C het 'n paar van die verskillende maniere om druk voorwaardelike uitdrukkings, wat 11 00:00:26,690 --> 00:00:29,911 ons soms ook noem 'n voorwaardelike tak in jou programme. 12 00:00:29,911 --> 00:00:32,910 En 'n paar van hierdie gaan kyk mooi aan u bekend van nuuts af, 13 00:00:32,910 --> 00:00:35,190 so ons sal hulle selfs te trek up langs mekaar, net 14 00:00:35,190 --> 00:00:38,170 wat jy kan analogie in jou kop te maak. 15 00:00:38,170 --> 00:00:41,250 >> So, as if-- is 'n mooi eenvoudige voorwaardelik. 16 00:00:41,250 --> 00:00:43,560 As jy onthou uit nuuts op die regte hier 17 00:00:43,560 --> 00:00:50,000 jy kan vul in wat heksagoon met 'n blou uitdrukking as muis af 18 00:00:50,000 --> 00:00:53,010 of as x is minder as 10, of iets soos dit. 19 00:00:53,010 --> 00:00:57,390 En dan, as x is minder as 10, of indien die muis was in werklikheid, af, 20 00:00:57,390 --> 00:01:01,140 al die kode binnekant van die legkaart stuk sal voer. 21 00:01:01,140 --> 00:01:03,720 Al die dinge wat pas binne-in dat C vorm. 22 00:01:03,720 --> 00:01:07,200 >> Net so, het ons As aan die linkerkant is daar. 23 00:01:07,200 --> 00:01:09,210 As Boole-uitdrukking, wat ek net die gebruik van 24 00:01:09,210 --> 00:01:13,010 as 'n plaasvervanger vir een van die Boole uitdrukkings wat ons voorheen bespreek, 25 00:01:13,010 --> 00:01:15,240 oop krullerige brace, naby krullerige brace. 26 00:01:15,240 --> 00:01:17,720 So dink van 'n oop krullerige stut en geslote krullerige brace 27 00:01:17,720 --> 00:01:22,720 as 'n soort van analoog aan die toebroodjie effek van die as blok op die regte 28 00:01:22,720 --> 00:01:24,070 van die begin af. 29 00:01:24,070 --> 00:01:28,680 >> As die Boole-uitdrukking in die as stelling waar is, 30 00:01:28,680 --> 00:01:30,900 dan sal al die reëls van die kode tussen die krulhakies 31 00:01:30,900 --> 00:01:33,870 sal voer ten einde van bo tot onder. 32 00:01:33,870 --> 00:01:35,700 As die Boole-uitdrukking vals is, sal ons 33 00:01:35,700 --> 00:01:38,610 spring oor alles tussenin die krulhakies, want net ons 34 00:01:38,610 --> 00:01:44,570 wil om te gaan dat vurk in die pad indien die Boole-uitdrukking is waar. 35 00:01:44,570 --> 00:01:48,540 >> Ons kan dit 'n stap te neem verder met as anders. 36 00:01:48,540 --> 00:01:50,820 So hierdie Scratch blok is mooi soortgelyk aan die een 37 00:01:50,820 --> 00:01:55,884 ons het net gesien 'n tweede gelede nie, behalwe dit neem twee verskillende paaie gebaseer 38 00:01:55,884 --> 00:01:56,550 oor wat gebeur. 39 00:01:56,550 --> 00:02:00,420 So as die muis af was, of as x is minder as 10, 40 00:02:00,420 --> 00:02:04,780 ons sal alles wat tussen in doen dat die eerste vurk, wat die eerste keer C., 41 00:02:04,780 --> 00:02:08,430 >> Andersins, as die muis is up, of x is nie minder nie as 10, 42 00:02:08,430 --> 00:02:10,460 Ons sal alles in die tweede stel te doen. 43 00:02:10,460 --> 00:02:15,010 En dit is analoog aan wat jy sien hier vir C. As Boole-uitdrukking, 44 00:02:15,010 --> 00:02:17,910 doen die dinge tussen die eerste stel krullerige draadjies. 45 00:02:17,910 --> 00:02:20,550 Anders, doen die dinge tussen die tweede stel krullerige draadjies. 46 00:02:20,550 --> 00:02:22,080 So as die Boole uitdrukking is waar, ons sal 47 00:02:22,080 --> 00:02:23,580 doen wat is tussen die eerste stel. 48 00:02:23,580 --> 00:02:27,480 As die Boole-uitdrukking is valse, sou die ander sneller, 49 00:02:27,480 --> 00:02:30,100 en ons sal alles in ons doen die tweede stel krullerige draadjies. 50 00:02:30,100 --> 00:02:34,190 Weereens, bo na onder, al lyne tussen die draadjies. 51 00:02:34,190 --> 00:02:38,130 >> In C, is dit moontlik om te skep 'n if-else if-else ketting. 52 00:02:38,130 --> 00:02:42,000 In die feit dat jy kan hê if-else if-else if-else, indien, en so aan en so aan en so 53 00:02:42,000 --> 00:02:42,720 op. 54 00:02:42,720 --> 00:02:44,660 In Scratch, hierdie vereiste nes die blokke. 55 00:02:44,660 --> 00:02:48,280 Jy voeg 'n if-else, en jy het om te sit nog een binnekant van die ander, 56 00:02:48,280 --> 00:02:51,110 en so aan, en dit soort het van geneste en ingewikkeld. 57 00:02:51,110 --> 00:02:52,450 Maar C, ons het nie om dit te doen. 58 00:02:52,450 --> 00:02:55,300 Ons kan eintlik net dit 'n ketting soos hierdie. 59 00:02:55,300 --> 00:02:58,350 Weereens, as jy kan verwag, al hierdie takke is onderling uitsluitend. 60 00:02:58,350 --> 00:03:00,750 Jy kan net ooit gaan af een van die tak. 61 00:03:00,750 --> 00:03:02,270 As dit waar is. 62 00:03:02,270 --> 00:03:03,930 Anders, as dit waar is. 63 00:03:03,930 --> 00:03:05,700 Anders, as dit waar is. 64 00:03:05,700 --> 00:03:07,120 Andersins, doen dit. 65 00:03:07,120 --> 00:03:11,010 So al vier van die takke in hierdie Byvoorbeeld onderling uitsluitend. 66 00:03:11,010 --> 00:03:14,900 Dit is 'n if-else if-else ketting. 67 00:03:14,900 --> 00:03:17,580 >> Dit is moontlik al is, en soms baie nuttig, 68 00:03:17,580 --> 00:03:20,950 'n ketting van skep nie wedersyds eksklusiewe takke. 69 00:03:20,950 --> 00:03:24,600 In hierdie voorbeeld, slegs die derde en vierde takke onderling uitsluitend. 70 00:03:24,600 --> 00:03:27,450 Dit kan wees dat jy kan voldoen aan die eerste voorwaarde, 71 00:03:27,450 --> 00:03:29,396 en jy kan bevredig die tweede voorwaarde, 72 00:03:29,396 --> 00:03:31,770 en jy kan voldoen aan die derde condition-- in welke geval 73 00:03:31,770 --> 00:03:35,270 jy sou afgaan die eerste tak, gaan dan af 'n tweede tak, 74 00:03:35,270 --> 00:03:37,000 dan sou jy afgaan die derde tak. 75 00:03:37,000 --> 00:03:40,450 Of dalk het jy voldoen aan die eerste toestand, en die tweede voorwaarde, 76 00:03:40,450 --> 00:03:42,770 maar jy het nie voldoen die derde toestand. 77 00:03:42,770 --> 00:03:46,230 In hierdie geval sal jy in die eerste tak en die tweede tak 78 00:03:46,230 --> 00:03:48,040 en dan die vierde tak 79 00:03:48,040 --> 00:03:51,392 >> Die rede hiervoor is dat die ander sal slegs bind aan die naaste as. 80 00:03:51,392 --> 00:03:53,100 So selfs al is daar 'n anders hier, wat 81 00:03:53,100 --> 00:03:56,490 nie noodwendig te skep 'n wedersyds eksklusiewe ketting van alles. 82 00:03:56,490 --> 00:04:00,890 Dit is net die uitdrukking daar met Boole 83 00:04:00,890 --> 00:04:05,040 uitdrukking 3-- dit is die wedersyds eksklusiewe met die anders. 84 00:04:05,040 --> 00:04:07,580 So is dit moontlik, en soms baie nuttig, 85 00:04:07,580 --> 00:04:11,772 soos ek gesê het, 'n ketting van skep nie wedersyds uitsluitend takke. 86 00:04:11,772 --> 00:04:14,230 Kom ons neem 'n blik op 'n ander soort voorwaardelike, wat 87 00:04:14,230 --> 00:04:17,392 het jy nie gesien voor in Scratch. 88 00:04:17,392 --> 00:04:19,369 Daar is iets genoem die skakelaar verklaring. 89 00:04:19,369 --> 00:04:21,410 Die skakelaar stelling soort van netjies, want dit is 90 00:04:21,410 --> 00:04:25,930 'n voorwaardelike verklaring wat toelaat jy duidelike gevalle spesifiseer, 91 00:04:25,930 --> 00:04:28,926 in plaas van vertroue op Boole uitdrukkings om besluite te neem vir jou. 92 00:04:28,926 --> 00:04:31,050 So byvoorbeeld, kom ons sê dat ek hierdie program 93 00:04:31,050 --> 00:04:34,110 en ek vra die gebruiker om insette te lewer vir my. 94 00:04:34,110 --> 00:04:37,170 So ek sê, int x = Kry Int (), en as jy nog nie vertroud is, 95 00:04:37,170 --> 00:04:40,190 kry int is 'n funksie wat ook ingesluit in die CS50 biblioteek, 96 00:04:40,190 --> 00:04:44,610 so as jy include CS50.H jy het Kry toegang tot Int () en al sy 97 00:04:44,610 --> 00:04:46,840 cousins-- GetFloat, GetString, en so aan. 98 00:04:46,840 --> 00:04:52,590 Basies een Kry funksie vir elke tipe data wat ons reeds bespreek het. 99 00:04:52,590 --> 00:04:53,970 >> So Int x gelyk GetInt. 100 00:04:53,970 --> 00:04:56,390 Basies wat gebeur is ek by die terminale. 101 00:04:56,390 --> 00:04:58,790 Ek is die gebruiker vra om te tik in 'n nommer. 102 00:04:58,790 --> 00:05:02,300 >> En hier is die skakel ek wat ek doen, afhangende 103 00:05:02,300 --> 00:05:05,060 oor wat die gebruiker getik op die instruksielyn. 104 00:05:05,060 --> 00:05:09,147 So as hulle getik een, ek druk een. 105 00:05:09,147 --> 00:05:09,855 En dan breek ek. 106 00:05:09,855 --> 00:05:12,590 107 00:05:12,590 --> 00:05:15,510 As hulle twee tik, ek druk twee. 108 00:05:15,510 --> 00:05:16,690 En dan breek ek. 109 00:05:16,690 --> 00:05:19,060 Dit is belangrik om breek tussen elke geval 110 00:05:19,060 --> 00:05:20,890 want anders sal jy deur middel van val. 111 00:05:20,890 --> 00:05:23,380 So as ek nie het nie breek daar, en die gebruiker 112 00:05:23,380 --> 00:05:31,380 getikte een wat sou gebeur is dit sou druk een, twee, drie, jammer. 113 00:05:31,380 --> 00:05:33,099 Dit is soort van vreemde gedrag, reg? 114 00:05:33,099 --> 00:05:33,890 Jy kan so te dink. 115 00:05:33,890 --> 00:05:36,480 Maar daar is eintlik 'n paar gevalle waar dit kan 'n baie handig ding wees. 116 00:05:36,480 --> 00:05:39,730 So hier is nog 'n voorbeeld van 'n skakelaar verklaring waar ek laat die breek. 117 00:05:39,730 --> 00:05:42,030 Maar ek doen dit met 'n doel. 118 00:05:42,030 --> 00:05:43,030 >> So wat gebeur hier? 119 00:05:43,030 --> 00:05:43,821 Dink vir 'n tweede. 120 00:05:43,821 --> 00:05:45,960 Jy kan selfs wil breek die video. 121 00:05:45,960 --> 00:05:48,230 >> Wat gebeur hier as die gebruiker vier? 122 00:05:48,230 --> 00:05:51,190 123 00:05:51,190 --> 00:05:53,860 So ek het die gebruiker vir insette gevra. 124 00:05:53,860 --> 00:05:56,560 En hulle die waarde 4. 125 00:05:56,560 --> 00:05:59,545 Wat kry gedruk toe ek dit doen? 126 00:05:59,545 --> 00:06:02,170 Op die vorige skyfie, was daar breek tussen al die gevalle. 127 00:06:02,170 --> 00:06:04,750 En so het dit sou net druk vier en dan te stop. 128 00:06:04,750 --> 00:06:06,610 Maar in hierdie geval, dit sal nie. 129 00:06:06,610 --> 00:06:10,700 Wat sal gebeur is dat jy sal deur middel van elke geval val. 130 00:06:10,700 --> 00:06:14,890 >> So in hierdie geval Ek het my gevalle georganiseer in so 'n manier dat as die gebruiker tipes 4, 131 00:06:14,890 --> 00:06:20,070 Ek sal druk vier, drie, twee, een, blaas af. 132 00:06:20,070 --> 00:06:22,780 En as hulle getik 5, sou ek begin vyf en doen dieselfde ding. 133 00:06:22,780 --> 00:06:26,410 As hulle getik 1, sou ek doen net een ontploffing af. 134 00:06:26,410 --> 00:06:28,715 >> So in hierdie geval, ek gebruik van 'n skakelaar soort slim so 135 00:06:28,715 --> 00:06:30,804 dat ek nie van plan om te val deur al die gevalle. 136 00:06:30,804 --> 00:06:33,720 Maar oor die algemeen is waarskynlik gaan jy wil breek tussen almal van hulle, 137 00:06:33,720 --> 00:06:36,090 tensy jy 'n situasie soos hierdie een waar jy 138 00:06:36,090 --> 00:06:40,081 soort gebruik te maak van die feit dat jy val deur die gevalle sonder 'n pouse. 139 00:06:40,081 --> 00:06:42,830 So dit is die tweede van die groot tipes voorwaardelike stellings. 140 00:06:42,830 --> 00:06:47,139 Die laaste van wat is:? So ek het twee stukkies van C-kode hier. 141 00:06:47,139 --> 00:06:48,680 Een aan die linkerkant en een aan die regterkant. 142 00:06:48,680 --> 00:06:52,330 Die een aan die linkerkant moet waarskynlik redelik bekend aan jou. 143 00:06:52,330 --> 00:06:55,110 >> Ek het Int x. 144 00:06:55,110 --> 00:06:57,167 En ek waarskynlik sou die gebruiker gevra 145 00:06:57,167 --> 00:07:00,250 for-- dit moet waarskynlik Int x gelyk GetInt, of iets soos dit. 146 00:07:00,250 --> 00:07:03,030 147 00:07:03,030 --> 00:07:05,240 En dan is ek 'n besluit neem. 148 00:07:05,240 --> 00:07:11,700 As sommige Boole-uitdrukking is ware, toewys x die waarde 5. 149 00:07:11,700 --> 00:07:13,590 Anders, toewys x die waarde 6. 150 00:07:13,590 --> 00:07:16,548 >> Dit aan die linkerkant moet waarskynlik mooi vertroud uit ons bespreking 151 00:07:16,548 --> 00:07:18,160 van As Else net 'n oomblik gelede. 152 00:07:18,160 --> 00:07:20,535 Wil jy verbaas wees om te weet dat die lyn op die regte 153 00:07:20,535 --> 00:07:22,310 doen presies dieselfde ding? 154 00:07:22,310 --> 00:07:26,140 >> So is dit genoem: of soms genoem die drieledige operateur. 155 00:07:26,140 --> 00:07:27,450 En dit is pretty cool. 156 00:07:27,450 --> 00:07:29,110 Dit is gewoonlik gebruik as 'n oulike truuk. 157 00:07:29,110 --> 00:07:35,777 >> Maar wat dit laat jou toe om te doen, is om simuleer 'n As Else met baie klein, 158 00:07:35,777 --> 00:07:37,610 regtig trivially kort voorwaardelike takke. 159 00:07:37,610 --> 00:07:41,470 Jy sal oor die algemeen nie gebruik:? As jy het ses reëls van die kode tussen elke stel 160 00:07:41,470 --> 00:07:42,569 krullerige draadjies. 161 00:07:42,569 --> 00:07:44,360 Maar as jy net maak 'n vinnige besluit, 162 00:07:44,360 --> 00:07:47,520 As jy gaan om een ​​ding te doen of die ander en dit is baie eenvoudig, 163 00:07:47,520 --> 00:07:52,240 hierdie dalk 'n voorbeeld van hoe om te wees doen dit met:? die drieledige operateur. 164 00:07:52,240 --> 00:07:56,940 So Int x gelyk uitdrukking? 165 00:07:56,940 --> 00:07:59,470 Die ding na die vraag merk is wat x se waarde 166 00:07:59,470 --> 00:08:02,690 sal wees as uitdrukking waar is. 167 00:08:02,690 --> 00:08:05,330 >> Die ding na die kolon is wat x se waarde 168 00:08:05,330 --> 00:08:07,990 sou wees as die uitdrukking vals was. 169 00:08:07,990 --> 00:08:11,510 So ek myself vra, is die uitdrukking waar? 170 00:08:11,510 --> 00:08:13,870 As dit is, toewys x die waarde 5. 171 00:08:13,870 --> 00:08:16,619 As dit is nie, wys x die waarde 6. 172 00:08:16,619 --> 00:08:17,410 Weereens, soos ek gesê het. 173 00:08:17,410 --> 00:08:18,670 Dit is gewoonlik net 'n oulike truuk. 174 00:08:18,670 --> 00:08:20,430 En soms as jy ' regtig gemaklik met dit, 175 00:08:20,430 --> 00:08:22,820 jy sal dit doen omdat dit lyk gaaf in jou programme. 176 00:08:22,820 --> 00:08:25,710 Algemeen ek dit aan jy nou so jy vertroud is met dit is 177 00:08:25,710 --> 00:08:26,990 as jy dit sien. 178 00:08:26,990 --> 00:08:30,080 Maar beslis weet jy hoef nie om dit te skryf in enige van jou kode. 179 00:08:30,080 --> 00:08:33,246 Maar dit is iets om vertroud wees met, omdat jy sal beslis teëkom 180 00:08:33,246 --> 00:08:36,130 stukkies van die kode hier en daar waar dit:? sintaksis, 181 00:08:36,130 --> 00:08:39,120 AKA die drieledige operateur, gebruik word. 182 00:08:39,120 --> 00:08:40,960 >> So vinnige opsomming op wat conditionals is, 183 00:08:40,960 --> 00:08:44,210 en wat die opsies is beskikbaar om jou in C. Jy het As en if-else, 184 00:08:44,210 --> 00:08:46,860 en as anders as, ensovoorts. 185 00:08:46,860 --> 00:08:50,880 Jy kan Boolse uitdrukkings te gebruik vir diegene om besluite te neem. 186 00:08:50,880 --> 00:08:53,720 >> Met skakelaar stellings wat jy gebruik diskrete gevalle om besluite te neem. 187 00:08:53,720 --> 00:08:57,540 Jy sal spesifiek sê, as dit een is, of indien dit is twee, of as dit is drie, 188 00:08:57,540 --> 00:09:00,870 Ek sal hierdie ding doen, of hierdie ding, of hierdie ding. 189 00:09:00,870 --> 00:09:04,660 En: kan gebruik word om te vervang baie eenvoudige if-else takke, 190 00:09:04,660 --> 00:09:08,490 of if-else kettings te maak jou kode kyk 'n bietjie fancy. 191 00:09:08,490 --> 00:09:09,250 >> Ek is Doug Lloyd. 192 00:09:09,250 --> 00:09:11,410 En dit is CS50. 193 00:09:11,410 --> 00:09:12,959