1 00:00:00,000 --> 00:00:05,140 2 00:00:05,140 --> 00:00:05,640 Allt í lagi. 3 00:00:05,640 --> 00:00:08,330 Svo nú skulum við tala um eitthvað mjög gagnlegt í programming-- 4 00:00:08,330 --> 00:00:09,914 skilyrt yfirlýsingar. 5 00:00:09,914 --> 00:00:11,830 Svo skilyrt orðasambönd leyfa forrit 6 00:00:11,830 --> 00:00:14,538 til að taka ákvarðanir og taka öðruvísi gafflar á veginum, eitthvað 7 00:00:14,538 --> 00:00:17,670 Ég vék að aðeins fyrr, allt eftir þeim gildum á breytum, 8 00:00:17,670 --> 00:00:20,990 eða miðað við það sem notandi inntak á forritari, á the stjórn lína, 9 00:00:20,990 --> 00:00:23,130 eða ef þú ert með hvetja eða eitthvað svoleiðis. 10 00:00:23,130 --> 00:00:26,690 C hefur nokkra mismunandi vegu til tjá skilyrtum orðasamböndum, sem 11 00:00:26,690 --> 00:00:29,911 við einnig stundum mun kalla skilyrt útibú í áætlunum þínum. 12 00:00:29,911 --> 00:00:32,910 Og sumir þeirra eru að fara að líta nokkuð kunnuglegt við þig frá grunni, 13 00:00:32,910 --> 00:00:35,190 þannig að við munum jafnvel draga þá upp hlið við hlið, rétt 14 00:00:35,190 --> 00:00:38,170 þú getur gert það hliðstæðan í höfuðið. 15 00:00:38,170 --> 00:00:41,250 >> Svo, if-- ef er nokkuð einfalt skilyrt. 16 00:00:41,250 --> 00:00:43,560 Ef þú manst frá klóra á hægri hér 17 00:00:43,560 --> 00:00:50,000 þú gæti fyllt í það er sexhyrningi með bláum tjáningu ef mús niður 18 00:00:50,000 --> 00:00:53,010 eða, ef X er minni en 10, eða eitthvað svoleiðis. 19 00:00:53,010 --> 00:00:57,390 Og þá, ef x var minna en 10, eða ef mús var í raun, niður, 20 00:00:57,390 --> 00:01:01,140 allan kóðann inni í þraut stykki myndi framkvæma. 21 00:01:01,140 --> 00:01:03,720 Allt það sem passa inni að C lögun. 22 00:01:03,720 --> 00:01:07,200 >> Á sama hátt, höfum við ef vinstri þar. 23 00:01:07,200 --> 00:01:09,210 Ef Boolean tjáningu, sem ég er bara að nota 24 00:01:09,210 --> 00:01:13,010 í staðinn fyrir einn af Boolean orðasambönd og við ræddum áður, 25 00:01:13,010 --> 00:01:15,240 opinn hrokkið Brace, nálægt hrokkið Brace. 26 00:01:15,240 --> 00:01:17,720 Svo hugsa um opinn hrokkið Brace og lokað hrokkið Brace 27 00:01:17,720 --> 00:01:22,720 eins konar hliðstætt samloku Áhrif ef blokk á hægri 28 00:01:22,720 --> 00:01:24,070 frá grunni. 29 00:01:24,070 --> 00:01:28,680 >> Ef Boolean tjáningu í ef staðhæfing er satt, 30 00:01:28,680 --> 00:01:30,900 þá allir línur af kóða milli hrokkið axlabönd 31 00:01:30,900 --> 00:01:33,870 mun framkvæma í því skyni frá toppi til botn. 32 00:01:33,870 --> 00:01:35,700 Ef Boolean tjáningu er ósatt, við munum 33 00:01:35,700 --> 00:01:38,610 sleppa yfir allt þar á milli hrokkið axlabönd, vegna þess að við bara 34 00:01:38,610 --> 00:01:44,570 langar að fara niður gaffal í veginum ef Boolean tjáning er satt. 35 00:01:44,570 --> 00:01:48,540 >> Við getum tekið þetta einu skrefi frekar með ef annað. 36 00:01:48,540 --> 00:01:50,820 Svo er þetta Scratch blokk nokkuð svipað því sem 37 00:01:50,820 --> 00:01:55,884 við sáum bara annað síðan, nema það tekur tvær mismunandi leiðir sem byggjast 38 00:01:55,884 --> 00:01:56,550 á hvað gerist. 39 00:01:56,550 --> 00:02:00,420 Þannig að ef mús var niður, eða, ef X var minna en 10, 40 00:02:00,420 --> 00:02:04,780 við munum gera allt sem er á milli sem fyrst gaffal, sem fyrst C., 41 00:02:04,780 --> 00:02:08,430 >> Annars, ef músin er upp, eða X er ekki minna en 10, 42 00:02:08,430 --> 00:02:10,460 við munum gera allt sem í seinni setja. 43 00:02:10,460 --> 00:02:15,010 Og það er hliðstætt því sem þú sérð hér fyrir C. Ef Boolean tjáningu, 44 00:02:15,010 --> 00:02:17,910 gera efni milli fyrst sett af hrokkið axlabönd. 45 00:02:17,910 --> 00:02:20,550 Annars, gera efni milli Annað sett af hrokkið axlabönd. 46 00:02:20,550 --> 00:02:22,080 Þannig að ef Boolean tjáning er satt, við munum 47 00:02:22,080 --> 00:02:23,580 gera hvað sem er á milli fyrsta sett. 48 00:02:23,580 --> 00:02:27,480 Ef Boolean tjáningu er rangar, sem myndi kalla á annað, 49 00:02:27,480 --> 00:02:30,100 og við myndum gera hvað sem er í The second setja af hrokkið axlabönd. 50 00:02:30,100 --> 00:02:34,190 Aftur, toppur til botn, allt línur í milli axlabönd. 51 00:02:34,190 --> 00:02:38,130 >> Í C, það er hægt að búa til if-else if-else keðja. 52 00:02:38,130 --> 00:02:42,000 Í raun er hægt að hafa if-else if-else if-else, ef og svo framvegis og svo framvegis og svo 53 00:02:42,000 --> 00:02:42,720 á. 54 00:02:42,720 --> 00:02:44,660 Í grunni, þetta þarf verpa blokkir. 55 00:02:44,660 --> 00:02:48,280 Þú bætir if-else, og þú þurftir að setja annað inni í annað, 56 00:02:48,280 --> 00:02:51,110 og svo framvegis, og það fékk svona hreiður og flókið. 57 00:02:51,110 --> 00:02:52,450 En C, höfum við ekki að gera það. 58 00:02:52,450 --> 00:02:55,300 Við getum í raun bara það að vera keðja svona. 59 00:02:55,300 --> 00:02:58,350 Aftur, eins og þú might búast við, allt Þessar greinar eru ósamrýmanlegir. 60 00:02:58,350 --> 00:03:00,750 Þú getur bara alltaf farið niður einn af útibúsins. 61 00:03:00,750 --> 00:03:02,270 Ef þetta er satt. 62 00:03:02,270 --> 00:03:03,930 Annars, ef þetta er satt. 63 00:03:03,930 --> 00:03:05,700 Annars, ef þetta er satt. 64 00:03:05,700 --> 00:03:07,120 Annars gera þetta. 65 00:03:07,120 --> 00:03:11,010 Svo öll fjögur útibú í þetta dæmi eru ósamrýmanlegir. 66 00:03:11,010 --> 00:03:14,900 Það er if-else if-else keðja. 67 00:03:14,900 --> 00:03:17,580 >> Það er mögulegt þó, og stundum mjög gagnlegt, 68 00:03:17,580 --> 00:03:20,950 til að búa til keðju af ekki ósamrýmanlegir útibú. 69 00:03:20,950 --> 00:03:24,600 Í þessu dæmi er, aðeins þriðja og fjórða útibú eru ósamrýmanlegir. 70 00:03:24,600 --> 00:03:27,450 Það gæti verið að þú gætir fullnægja fyrsta skilyrði, 71 00:03:27,450 --> 00:03:29,396 og þú gætir fullnægja annað ástand, 72 00:03:29,396 --> 00:03:31,770 og þú gætir fullnægja Þriðja condition-- í því tilviki 73 00:03:31,770 --> 00:03:35,270 þú vildi fara niður fyrsta útibúið, þá fara niður annað útibú, 74 00:03:35,270 --> 00:03:37,000 þá myndi fara niður í þriðja útibú. 75 00:03:37,000 --> 00:03:40,450 Eða kannski þú uppfyllir fyrsta ástand, og annað skilyrðið, 76 00:03:40,450 --> 00:03:42,770 en þú uppfyllir ekki Þriðja skilyrðið. 77 00:03:42,770 --> 00:03:46,230 Í þessu tilfelli þú ferð niður í fyrsta grein og annað grein, 78 00:03:46,230 --> 00:03:48,040 og Þá fjórða grein, 79 00:03:48,040 --> 00:03:51,392 >> Ástæðan fyrir þessu er sú að annað mun aðeins bindast næsta ef. 80 00:03:51,392 --> 00:03:53,100 Svo jafnvel þó að það er An annar hér, sem 81 00:03:53,100 --> 00:03:56,490 ekki endilega að búa til gagnkvæmt einkarétt keðja af öllu. 82 00:03:56,490 --> 00:04:00,890 Það er bara orðið þar með Boolean 83 00:04:00,890 --> 00:04:05,040 hugtakið 3-- það er ósamrýmanlegir með öðrum. 84 00:04:05,040 --> 00:04:07,580 Svo það er hægt, og stundum alveg gagnlegt, 85 00:04:07,580 --> 00:04:11,772 eins og ég sagði, að búa til keðju af ekki ósamrýmanlegir útibú. 86 00:04:11,772 --> 00:04:14,230 Við skulum taka a líta á mismunandi konar skilyrt, sem 87 00:04:14,230 --> 00:04:17,392 þú hefur ekki séð áður í grunni. 88 00:04:17,392 --> 00:04:19,369 Það er eitthvað sem kallast skiptir yfirlýsingu. 89 00:04:19,369 --> 00:04:21,410 The rofi staðhæfing er konar sniðugt því það er 90 00:04:21,410 --> 00:04:25,930 skilyrt yfirlýsingu sem gerir þú að tilgreina mismunandi tilvikum, 91 00:04:25,930 --> 00:04:28,926 í stað þess að reiða sig á Boolean orðasambönd til að taka ákvarðanir fyrir þig. 92 00:04:28,926 --> 00:04:31,050 Svo til dæmis, við skulum segja að ég hef þetta forrit, 93 00:04:31,050 --> 00:04:34,110 og ég er að spyrja notandann að veita inntak mér. 94 00:04:34,110 --> 00:04:37,170 Svo ég segi, int x = Fá Int (), og ef þú ert ekki kunnuglegur enn, 95 00:04:37,170 --> 00:04:40,190 fá int er fall sem er einnig í CS50 bókasafn, 96 00:04:40,190 --> 00:04:44,610 þannig að ef þú #include cs50.h þú þarft aðgang til að fá Int () og öll hennar 97 00:04:44,610 --> 00:04:46,840 cousins-- GetFloat, Getstring, og svo framvegis. 98 00:04:46,840 --> 00:04:52,590 Grundvallaratriðum einn Fá virka fyrir hvern gögn tegund sem við höfum þegar rætt. 99 00:04:52,590 --> 00:04:53,970 >> Svo Int x er jafnt GetInt. 100 00:04:53,970 --> 00:04:56,390 Í grundvallaratriðum það sem er að gerast er ég í flugstöðinni. 101 00:04:56,390 --> 00:04:58,790 Ég ætla að biðja notandann að slá inn númer. 102 00:04:58,790 --> 00:05:02,300 >> Og hér er ég að skipta hvað ég er að gera, eftir 103 00:05:02,300 --> 00:05:05,060 á það sem notandinn slegið þegar beðið. 104 00:05:05,060 --> 00:05:09,147 Svo ef þeir slegið einn, prenta ég út einn. 105 00:05:09,147 --> 00:05:09,855 Og þá er ég að brjóta. 106 00:05:09,855 --> 00:05:12,590 107 00:05:12,590 --> 00:05:15,510 Ef þeir slá tvær, prenta ég út tvær. 108 00:05:15,510 --> 00:05:16,690 Og þá er ég að brjóta. 109 00:05:16,690 --> 00:05:19,060 Það er mikilvægt að brjóta milli hverju sinni 110 00:05:19,060 --> 00:05:20,890 því annars munt þú falla í gegnum. 111 00:05:20,890 --> 00:05:23,380 Þannig að ef ég vissi ekki hafa allir hlé þar og notandi 112 00:05:23,380 --> 00:05:31,380 slegið einn, hvað myndi gerast er það myndi prenta einn, tveir, þrír, því miður. 113 00:05:31,380 --> 00:05:33,099 Það er góður af undarlega hegðun, ekki satt? 114 00:05:33,099 --> 00:05:33,890 Þú might hugsa svo. 115 00:05:33,890 --> 00:05:36,480 En það eru í raun nokkur tilfelli þar þetta gæti verið nokkuð gagnlegur hlutur. 116 00:05:36,480 --> 00:05:39,730 Svo er hér annað dæmi um rofi Yfirlýsing þar sem ég sleppt hlé. 117 00:05:39,730 --> 00:05:42,030 En ég gera það á tilgangi. 118 00:05:42,030 --> 00:05:43,030 >> Svo hvað gerist hér? 119 00:05:43,030 --> 00:05:43,821 Hugsa um annað. 120 00:05:43,821 --> 00:05:45,960 Þú gætir jafnvel vilja til að gera hlé á vídeó. 121 00:05:45,960 --> 00:05:48,230 >> Hvað gerist hér ef sem notandinn slær fjögur? 122 00:05:48,230 --> 00:05:51,190 123 00:05:51,190 --> 00:05:53,860 Þannig að ég hef spurt notanda fyrir hjálpina. 124 00:05:53,860 --> 00:05:56,560 Og þeir veita gildi 4. 125 00:05:56,560 --> 00:05:59,545 Hvað fær prentuð þegar ég gera það? 126 00:05:59,545 --> 00:06:02,170 Á fyrri mynd, það voru hlé milli öllum tilvikum. 127 00:06:02,170 --> 00:06:04,750 Og svo það myndi bara prenta fjögur og þá hættir. 128 00:06:04,750 --> 00:06:06,610 En í þessu tilfelli, það verður ekki. 129 00:06:06,610 --> 00:06:10,700 Hvað mun gerast er þér mun falla í gegnum hvert tilfelli. 130 00:06:10,700 --> 00:06:14,890 >> Þannig að í þessu tilfelli ég hef skipulagt málum mínum á þann hátt að ef notandinn slær 4, 131 00:06:14,890 --> 00:06:20,070 Ég mun prenta fjórir, þrír, tveir, einn, sprengja burt. 132 00:06:20,070 --> 00:06:22,780 Og ef þeir slegið 5, myndi ég byrja á fimm og gera það sama. 133 00:06:22,780 --> 00:06:26,410 Ef þeir slegið 1, myndi ég bara gera eitt, sprengja burt. 134 00:06:26,410 --> 00:06:28,715 >> Þannig að í þessu tilfelli, ég er að nota rofi konar snjall svo 135 00:06:28,715 --> 00:06:30,804 sem ég ætla að falla í gegnum öll tilvikum. 136 00:06:30,804 --> 00:06:33,720 En almennt þú ert sennilega að vilja til að brjóta á milli allra þeirra, 137 00:06:33,720 --> 00:06:36,090 nema þú hafa a ástand eins og þessi þar sem þú ert 138 00:06:36,090 --> 00:06:40,081 konar fá meira þá staðreynd að þú munt falla í gegnum tilvikum án hlés. 139 00:06:40,081 --> 00:06:42,830 Svo er það önnur af helstu tegundir skilyrt yfirlýsingum. 140 00:06:42,830 --> 00:06:47,139 Síðasta sem er:? Svo ég hafa tvö sýnishorn af C kóða hér. 141 00:06:47,139 --> 00:06:48,680 Einn á vinstri og einn á hægri. 142 00:06:48,680 --> 00:06:52,330 Einn á vinstri ætti sennilega vera nokkuð þekki þig. 143 00:06:52,330 --> 00:06:55,110 >> Ég hef int x. 144 00:06:55,110 --> 00:06:57,167 Og ég ætti sennilega hafa beðið notanda 145 00:06:57,167 --> 00:07:00,250 for-- þetta ætti sennilega að vera Int x jafngildir GetInt, eða eitthvað svoleiðis. 146 00:07:00,250 --> 00:07:03,030 147 00:07:03,030 --> 00:07:05,240 Og þá er ég að taka ákvörðun. 148 00:07:05,240 --> 00:07:11,700 Ef einhver Boolean tjáning er satt, úthluta x verðmæti 5. 149 00:07:11,700 --> 00:07:13,590 Annars úthluta x verðmæti 6. 150 00:07:13,590 --> 00:07:16,548 >> Að á vinstri ætti sennilega að vera nokkuð vel úr umræðu okkar 151 00:07:16,548 --> 00:07:18,160 Verði Else bara í smá stund síðan. 152 00:07:18,160 --> 00:07:20,535 Vilt þú að vera undrandi til vita að línu til hægri 153 00:07:20,535 --> 00:07:22,310 er nákvæmlega sama? 154 00:07:22,310 --> 00:07:26,140 >> Þannig að þetta er kallað:? Eða stundum kallað þríþætt rekstraraðila. 155 00:07:26,140 --> 00:07:27,450 Og það er laglegur kaldur. 156 00:07:27,450 --> 00:07:29,110 Það er venjulega notað sem sætur bragð. 157 00:07:29,110 --> 00:07:35,777 >> En hvað það er hægt að gera er að líkja Ef Else með mjög lítil, 158 00:07:35,777 --> 00:07:37,610 virkilega trivially stutt skilyrt útibú. 159 00:07:37,610 --> 00:07:41,470 Þú almennt myndu ekki nota:? Ef þú átti sex línur af kóða milli hvern hóp 160 00:07:41,470 --> 00:07:42,569 af hrokkið axlabönd. 161 00:07:42,569 --> 00:07:44,360 En ef þú ert bara gera a fljótur ákvörðun, 162 00:07:44,360 --> 00:07:47,520 ef þú ert að fara að gera eitt eða annað og það er mjög einfalt, 163 00:07:47,520 --> 00:07:52,240 þetta gæti verið dæmi um hvernig á að gera það með:? á þríþætt rekstraraðila. 164 00:07:52,240 --> 00:07:56,940 Svo Int x er jafnt tjáningu? 165 00:07:56,940 --> 00:07:59,470 The hlutur eftir spurningunni Merkið er gildi hvað x er 166 00:07:59,470 --> 00:08:02,690 verður ef tjáning er satt. 167 00:08:02,690 --> 00:08:05,330 >> Málið eftir ristli er hvaða gildi x * 168 00:08:05,330 --> 00:08:07,990 væri ef orðið var falskur. 169 00:08:07,990 --> 00:08:11,510 Þannig að ég spyr mig, er tjáning satt? 170 00:08:11,510 --> 00:08:13,870 Ef það er, úthluta x verðmæti 5. 171 00:08:13,870 --> 00:08:16,619 Ef það er ekki, framselja x verðmæti 6. 172 00:08:16,619 --> 00:08:17,410 Aftur, eins og ég sagði. 173 00:08:17,410 --> 00:08:18,670 Þetta er yfirleitt bara sætur bragð. 174 00:08:18,670 --> 00:08:20,430 Og stundum ef þú verður mjög ánægð með það, 175 00:08:20,430 --> 00:08:22,820 þú munt gera þetta vegna þess að það lítur góður af kaldur í áætlunum þínum. 176 00:08:22,820 --> 00:08:25,710 Almennt er ég að kynna það til þú nú svo þú ert kunnuglegur með það 177 00:08:25,710 --> 00:08:26,990 ef þú sérð það. 178 00:08:26,990 --> 00:08:30,080 En vissulega veit að þú ert ekki að skrifa það í einhverju kóðann þinn. 179 00:08:30,080 --> 00:08:33,246 En það er eitthvað að vera kunnugt, því þú munt örugglega lenda 180 00:08:33,246 --> 00:08:36,130 sýnishorn af kóða hér og það þar sem þessi:? setningafræði, 181 00:08:36,130 --> 00:08:39,120 Aka the ternary rekstraraðila, er notað. 182 00:08:39,120 --> 00:08:40,960 >> Svo fljótur yfirlit um hvað conditionals eru, 183 00:08:40,960 --> 00:08:44,210 og hvað möguleikar eru í boði til þín í C. Þú þarft ef og if-else, 184 00:08:44,210 --> 00:08:46,860 og ef annað hvort, et cetera. 185 00:08:46,860 --> 00:08:50,880 Þú getur notað Boolean tjáning fyrir þá að taka ákvarðanir. 186 00:08:50,880 --> 00:08:53,720 >> Með rofi yfirlýsingar þú notar stakur tilvikum til að taka ákvarðanir. 187 00:08:53,720 --> 00:08:57,540 Þú myndir sérstaklega segja, ef það er einn, eða ef það er tveir, eða ef það er þrjú, 188 00:08:57,540 --> 00:09:00,870 Ég ætla að gera þetta, eða þessi hlutur, eða þessi hlutur. 189 00:09:00,870 --> 00:09:04,660 Og:? Er hægt að nota til að skipta mjög einfalt if-else útibú, 190 00:09:04,660 --> 00:09:08,490 eða if-else keðjur til að gera númerið þitt líta smá ímynda. 191 00:09:08,490 --> 00:09:09,250 >> Ég er Doug Lloyd. 192 00:09:09,250 --> 00:09:11,410 Og þetta er CS50. 193 00:09:11,410 --> 00:09:12,959