1 00:00:00,000 --> 00:00:05,140 2 00:00:05,140 --> 00:00:05,640 Lahat tama. 3 00:00:05,640 --> 00:00:08,330 Kaya ngayon sabihin makipag-usap tungkol sa isang bagay hayaan talagang kapaki-pakinabang sa programming-- 4 00:00:08,330 --> 00:00:09,914 kondisyon na pahayag. 5 00:00:09,914 --> 00:00:11,830 Kaya may kondisyon na expression payagan ang iyong mga programa 6 00:00:11,830 --> 00:00:14,538 upang gumawa ng mga desisyon at kumuha ng iba't ibang tinidor sa kalye, isang bagay 7 00:00:14,538 --> 00:00:17,670 Tinukoy ko na maliit na mas maaga, depende sa halaga ng variable, 8 00:00:17,670 --> 00:00:20,990 o batay sa kung ano ang input ng user sa ang programmer, sa command line, 9 00:00:20,990 --> 00:00:23,130 o kung ikaw ay may isang prompt o isang bagay tulad na. 10 00:00:23,130 --> 00:00:26,690 C ay may isang pares ng mga iba't-ibang mga paraan upang ipahayag ang kondisyon na expression, na kung saan 11 00:00:26,690 --> 00:00:29,911 kami din minsan tumawag sa isang kondisyong branch sa iyong mga programa. 12 00:00:29,911 --> 00:00:32,910 At ang ilan sa mga ito ay pagpunta sa hitsura medyo pamilyar sa iyo mula sa simula, 13 00:00:32,910 --> 00:00:35,190 kaya makikita namin kahit na hilahin ang mga ito up magkatabi, lamang 14 00:00:35,190 --> 00:00:38,170 maaari mong gawin na pagkakatulad sa inyong ulo. 15 00:00:38,170 --> 00:00:41,250 >> Kaya, if-- kung ay isang pretty simple kondisyon. 16 00:00:41,250 --> 00:00:43,560 Kung pagpapabalik sa iyo mula sa scratch sa kanang dito 17 00:00:43,560 --> 00:00:50,000 maaari mong punan na hexagon may asul na expression kung mouse down 18 00:00:50,000 --> 00:00:53,010 o kung ang x ay mas mababa sa 10, o isang bagay tulad na. 19 00:00:53,010 --> 00:00:57,390 At pagkatapos ay, kung ang x ay mas mababa sa 10, o kung ang mouse ay sa katunayan, pababa, 20 00:00:57,390 --> 00:01:01,140 ang lahat ng mga code sa loob ng piraso ng puzzle ay execute. 21 00:01:01,140 --> 00:01:03,720 Ang lahat ng mga bagay-bagay na magkasya sa loob na hugis C. 22 00:01:03,720 --> 00:01:07,200 >> Katulad nito, ang kailangan namin kung sa kaliwa doon. 23 00:01:07,200 --> 00:01:09,210 Kung Boolean expression, na lang ako ng gamit 24 00:01:09,210 --> 00:01:13,010 bilang isang kapalit para sa isa sa Boolean expression namin dati tinalakay, 25 00:01:13,010 --> 00:01:15,240 bukas kulot suhay, malapit kulot suhay. 26 00:01:15,240 --> 00:01:17,720 Kaya sa tingin ng mga bukas na kulot suhay at closed kulot suhay 27 00:01:17,720 --> 00:01:22,720 bilang uri ng kahalintulad sa sandwich epekto ng kung block sa kanan 28 00:01:22,720 --> 00:01:24,070 mula sa wala. 29 00:01:24,070 --> 00:01:28,680 >> Kung ang Boolean expression sa kung ang pahayag ay totoo, 30 00:01:28,680 --> 00:01:30,900 at pagkatapos ang lahat ng mga linya ng code sa pagitan ng mga kulot tirante 31 00:01:30,900 --> 00:01:33,870 ay execute sa order mula sa itaas hanggang sa ibaba. 32 00:01:33,870 --> 00:01:35,700 Kung ang Boolean expression ay hindi totoo, bibigyan namin ng 33 00:01:35,700 --> 00:01:38,610 laktawan sa paglipas ng lahat ng bagay sa pagitan ng ang kulot tirante, dahil kami lamang 34 00:01:38,610 --> 00:01:44,570 nais na bumaba na tinidor sa kalye kung ang Boolean expression ay totoo. 35 00:01:44,570 --> 00:01:48,540 >> Maaari naming gawin ito sa isang hakbang karagdagang sa kung tao. 36 00:01:48,540 --> 00:01:50,820 Kaya ito scratch block ay pretty katulad sa isa 37 00:01:50,820 --> 00:01:55,884 Nakita namin ang isang segundo lang ang nakalipas, maliban ito ay tumatagal ng dalawang magkaibang mga landas batay 38 00:01:55,884 --> 00:01:56,550 sa kung ano ang mangyayari. 39 00:01:56,550 --> 00:02:00,420 Kaya kung ang mouse ay down, o kung x ay mas mababa sa 10, 40 00:02:00,420 --> 00:02:04,780 gagawin namin ang lahat na nasa pagitan na unang tinidor, na unang C., 41 00:02:04,780 --> 00:02:08,430 >> Kung hindi man, kung ang mouse ay up, o ang x ay hindi mas mababa sa 10, 42 00:02:08,430 --> 00:02:10,460 gagawin namin ang lahat ng bagay sa ikalawang set. 43 00:02:10,460 --> 00:02:15,010 At iyan ay kahalintulad sa kung ano ang nakikita mo dito para sa C. Kung Boolean expression, 44 00:02:15,010 --> 00:02:17,910 gawin ang mga bagay-bagay sa pagitan ng unang hanay ng mga kulot tirante. 45 00:02:17,910 --> 00:02:20,550 Iba Pa, gawin ang mga bagay-bagay sa pagitan ng ikalawang hanay ng mga kulot tirante. 46 00:02:20,550 --> 00:02:22,080 Kaya kung ang Boolean expression ay totoo, bibigyan namin ng 47 00:02:22,080 --> 00:02:23,580 gawin ang anumang ay sa pagitan ng unang set. 48 00:02:23,580 --> 00:02:27,480 Kung ang Boolean expression ay false, na-trigger ang mga tao, 49 00:02:27,480 --> 00:02:30,100 at kami ay gawin ang anumang sa ang pangalawang hanay ng curly braces. 50 00:02:30,100 --> 00:02:34,190 Muli, sa itaas sa ibaba, ang lahat ng mga linya sa pagitan ng braces. 51 00:02:34,190 --> 00:02:38,130 >> Sa C, ito ay posible upang lumikha ng isang kung-iba kung-ibang chain. 52 00:02:38,130 --> 00:02:42,000 Sa katunayan maaari kang magkaroon ng kung-ibang kung-ibang kung-ibang, kung, at iba pa at iba pa at iba 53 00:02:42,000 --> 00:02:42,720 on. 54 00:02:42,720 --> 00:02:44,660 Sa simula, kinakailangan na ito mamahinga ang mga bloke. 55 00:02:44,660 --> 00:02:48,280 Idagdag mo isang kung-iba, at ikaw ay nagkaroon na maglagay ng isa pang isa sa loob ng ibang tao, 56 00:02:48,280 --> 00:02:51,110 at iba pa, at ito ay nakuha ng uri ng nested at kumplikado. 57 00:02:51,110 --> 00:02:52,450 Ngunit C, hindi namin ay may upang gawin iyon. 58 00:02:52,450 --> 00:02:55,300 Maaari naming talagang lamang magkaroon ng ito ay isang kadena na tulad nito. 59 00:02:55,300 --> 00:02:58,350 Muli, bilang maaari mong asahan, ang lahat ng mga mga sanga ay pare-pareho eksklusibo. 60 00:02:58,350 --> 00:03:00,750 Maaari ka lamang kailanman pumunta down na ang isa sa mga branch. 61 00:03:00,750 --> 00:03:02,270 Kung ito ay totoo. 62 00:03:02,270 --> 00:03:03,930 Kung hindi, kung ito ay totoo. 63 00:03:03,930 --> 00:03:05,700 Kung hindi, kung ito ay totoo. 64 00:03:05,700 --> 00:03:07,120 Kung hindi man, gawin ito. 65 00:03:07,120 --> 00:03:11,010 Kaya ang lahat ng apat na ng mga sangay sa mga ito Halimbawa ay kapwa eksklusibong. 66 00:03:11,010 --> 00:03:14,900 Ito ay isang kung-iba kung-ibang chain. 67 00:03:14,900 --> 00:03:17,580 >> Ito ay posible kahit na, at kung minsan ay lubhang kapaki-pakinabang, 68 00:03:17,580 --> 00:03:20,950 upang lumikha ng isang hanay ng mga hindi pare-pareho eksklusibo sanga. 69 00:03:20,950 --> 00:03:24,600 Sa halimbawa na ito, tanging ang ikatlo at ika-apat na sanga ay pare-pareho eksklusibo. 70 00:03:24,600 --> 00:03:27,450 Maaaring ito ay na maaari mong masiyahan ang unang kalagayan, 71 00:03:27,450 --> 00:03:29,396 at maaari kang masiyahan ang ikalawang kalagayan, 72 00:03:29,396 --> 00:03:31,770 at maaari kang masiyahan ang ikatlong condition-- sa kaso 73 00:03:31,770 --> 00:03:35,270 Gusto mong pumunta down ang unang branch, pagkatapos mong bumaba ng isang pangalawang branch, 74 00:03:35,270 --> 00:03:37,000 pagkatapos ay nais mong pumunta down ang ikatlong sangay. 75 00:03:37,000 --> 00:03:40,450 O di kaya mong masunod ang unang kalagayan, at ang ikalawang kalagayan, 76 00:03:40,450 --> 00:03:42,770 ngunit hindi mo na masunod ang ikatlong kondisyon. 77 00:03:42,770 --> 00:03:46,230 Sa kasong ito ikaw ay pupunta pababa sa unang sangay at ang pangalawang branch, 78 00:03:46,230 --> 00:03:48,040 at pagkatapos ay ang ika-apat na branch, 79 00:03:48,040 --> 00:03:51,392 >> Ang dahilan sa ito ay na ang mga ibang tao Makikita lamang panagutin sa pinakamalapit na kung. 80 00:03:51,392 --> 00:03:53,100 Kaya kahit na may isang iba pa dito, na 81 00:03:53,100 --> 00:03:56,490 ay hindi kinakailangang lumikha ng isang kapwa eksklusibong kadena ng lahat ng bagay. 82 00:03:56,490 --> 00:04:00,890 Ito ay lamang ang expression doon sa Boolean 83 00:04:00,890 --> 00:04:05,040 expression 3-- iyon ang pare-pareho eksklusibo sa mga ibang tao. 84 00:04:05,040 --> 00:04:07,580 Kaya ito ay posible, at minsan masyadong kapaki-pakinabang, 85 00:04:07,580 --> 00:04:11,772 gaya ng sinabi ko, upang lumikha ng isang hanay ng mga hindi pare-pareho eksklusibo sanga. 86 00:04:11,772 --> 00:04:14,230 Tingnan natin ang isang pagtingin sa isang iba't ibang uri ng mga kondisyon, na kung saan 87 00:04:14,230 --> 00:04:17,392 hindi mo pa nakikita dati sa scratch. 88 00:04:17,392 --> 00:04:19,369 May isang bagay na tinatawag na ang switch statement. 89 00:04:19,369 --> 00:04:21,410 Ang pahayag na lumipat ay uri ng kapong baka dahil sa ito ay 90 00:04:21,410 --> 00:04:25,930 isang kondisyon na pahayag na nagbibigay-daan sa iyo upang tukuyin natatanging mga kaso, 91 00:04:25,930 --> 00:04:28,926 halip na umasa sa Boolean expression upang gumawa ng mga desisyon para sa iyo. 92 00:04:28,926 --> 00:04:31,050 Kaya halimbawa, sabihin natin na mayroon akong programa na ito, 93 00:04:31,050 --> 00:04:34,110 at ako nagtatanong sa gumagamit upang magbigay ng input sa akin. 94 00:04:34,110 --> 00:04:37,170 Kaya sinasabi ko, int x = Kumuha ng int (), at kung hindi ka pamilyar pa, 95 00:04:37,170 --> 00:04:40,190 makakuha ng int ay isang function na ay kasama rin sa CS50 library, 96 00:04:40,190 --> 00:04:44,610 kaya kung # isama mo CS50.H magkakaroon ka access sa Kumuha ng int () at ang lahat ng kanyang 97 00:04:44,610 --> 00:04:46,840 cousins-- GetFloat, GetString, at iba pa. 98 00:04:46,840 --> 00:04:52,590 Karaniwang isa Kumuha ng function para sa bawat uri ng data na mayroon kami ay tinalakay. 99 00:04:52,590 --> 00:04:53,970 >> Kaya int x ay katumbas ng GetInt. 100 00:04:53,970 --> 00:04:56,390 Talaga kung ano ang nangyayari ay ako sa terminal. 101 00:04:56,390 --> 00:04:58,790 Ako nagtatanong sa gumagamit na i-type sa isang numero. 102 00:04:58,790 --> 00:05:02,300 >> At dito ako lumipat ano ang ginagawa ko, depende 103 00:05:02,300 --> 00:05:05,060 sa kung ano ang nai-type ang user sa prompt. 104 00:05:05,060 --> 00:05:09,147 Kaya kung sila nag-type ng isa, i-print ko out isa. 105 00:05:09,147 --> 00:05:09,855 At pagkatapos ay ako ay masira. 106 00:05:09,855 --> 00:05:12,590 107 00:05:12,590 --> 00:05:15,510 Kung nagta-type sila ng dalawang, i-print out ako sa dalawa. 108 00:05:15,510 --> 00:05:16,690 At pagkatapos ay ako ay masira. 109 00:05:16,690 --> 00:05:19,060 Mahalaga na masira sa pagitan ng bawat kaso 110 00:05:19,060 --> 00:05:20,890 dahil kung hindi man ikaw ay mahulog sa pamamagitan ng. 111 00:05:20,890 --> 00:05:23,380 Kaya kung hindi ko magkaroon ng anumang break doon, at ang mga gumagamit 112 00:05:23,380 --> 00:05:31,380 nag-type ng isa, ano ang mangyayari ito Gusto print ng isa, dalawa, tatlo, paumanhin. 113 00:05:31,380 --> 00:05:33,099 Iyon uri ng kakaibang pag-uugali, tama? 114 00:05:33,099 --> 00:05:33,890 Maaari mong isipin ito. 115 00:05:33,890 --> 00:05:36,480 Ngunit may mga aktwal na ilang mga kaso kung saan ang ito ay maaaring isang medyo kapaki-pakinabang na bagay. 116 00:05:36,480 --> 00:05:39,730 Kaya narito ang isa pang halimbawa ng isang lumipat pahayag kung saan ligtaan ko ang breaks. 117 00:05:39,730 --> 00:05:42,030 Subalit gagawin ko ito sa layunin. 118 00:05:42,030 --> 00:05:43,030 >> Kaya kung ano ang mangyayari dito? 119 00:05:43,030 --> 00:05:43,821 Mag-isip para sa isang segundo. 120 00:05:43,821 --> 00:05:45,960 Maaari kang kahit na gusto mong i-pause ang video. 121 00:05:45,960 --> 00:05:48,230 >> Ano ang mangyayari dito kung uri ng apat na mga user? 122 00:05:48,230 --> 00:05:51,190 123 00:05:51,190 --> 00:05:53,860 Kaya tinanong ko na ang mga user para sa input. 124 00:05:53,860 --> 00:05:56,560 At sila ay nagbibigay ng halaga 4. 125 00:05:56,560 --> 00:05:59,545 Ano ang makakakuha ng naka-print kapag gagawin ko na? 126 00:05:59,545 --> 00:06:02,170 Sa naunang slide, may mga break sa pagitan ng lahat ng mga kaso. 127 00:06:02,170 --> 00:06:04,750 At kaya ay ito lamang i-print ang apat at pagkatapos ay hihinto. 128 00:06:04,750 --> 00:06:06,610 Ngunit sa kasong ito, ito ay hindi. 129 00:06:06,610 --> 00:06:10,700 Ano ang mangyayari ay sa iyo ay mahulog sa pamamagitan ng bawat kaso. 130 00:06:10,700 --> 00:06:14,890 >> Kaya sa kasong ito na inayos ko na ang aking mga kaso sa paraan na kung ang uri ng user 4, 131 00:06:14,890 --> 00:06:20,070 Ako ay i-print ang apat, tatlo, dalawa, isa, sabog off. 132 00:06:20,070 --> 00:06:22,780 At kung sila nag-type 5, nais kong magsimula sa limang at gawin ang parehong bagay. 133 00:06:22,780 --> 00:06:26,410 Kung nai-type ito ay 1, nais ko gawin ang isa lamang, sabog off. 134 00:06:26,410 --> 00:06:28,715 >> Kaya sa kasong ito, gumagamit ako ng isang lumipat uri ng cleverly kaya 135 00:06:28,715 --> 00:06:30,804 na ko balak na mahulog sa lahat ng mga kaso. 136 00:06:30,804 --> 00:06:33,720 Ngunit sa pangkalahatan ikaw ay marahil gonna nais na break sa pagitan ng lahat ng mga ito, 137 00:06:33,720 --> 00:06:36,090 maliban kung mayroon kang isang sitwasyon tulad ng isang ito kung saan ikaw ay 138 00:06:36,090 --> 00:06:40,081 uri ng pagdaragdag ng katotohanan na makikita mo mahulog sa pamamagitan ng mga kaso na walang pahinga. 139 00:06:40,081 --> 00:06:42,830 Kaya iyon ang ikalawang ng mga pangunahing mga uri ng mga kondisyon na pahayag. 140 00:06:42,830 --> 00:06:47,139 Ang huling na kung saan ay: Kaya ako may dalawang mga snippet ng code sa C dito. 141 00:06:47,139 --> 00:06:48,680 Isa sa kaliwa at isa sa kanan. 142 00:06:48,680 --> 00:06:52,330 Ang isa sa kaliwa ay dapat malamang na medyo pamilyar sa iyo. 143 00:06:52,330 --> 00:06:55,110 >> Mayroon akong int x. 144 00:06:55,110 --> 00:06:57,167 At marahil ako dapat may nagtanong ang gumagamit 145 00:06:57,167 --> 00:07:00,250 for-- ito marahil ay dapat na int x ay katumbas ng GetInt, o isang bagay na tulad ng. 146 00:07:00,250 --> 00:07:03,030 147 00:07:03,030 --> 00:07:05,240 At pagkatapos ay ako gumawa ng isang desisyon. 148 00:07:05,240 --> 00:07:11,700 Kung ang ilang mga Boolean expression ay true, magtalaga x ang halaga 5. 149 00:07:11,700 --> 00:07:13,590 Kung hindi man, magtalaga x ang halaga 6. 150 00:07:13,590 --> 00:07:16,548 >> Iyon sa kaliwa dapat na marahil ay medyo pamilyar mula sa aming discussion 151 00:07:16,548 --> 00:07:18,160 ng kung Else sandali lamang ang nakalipas. 152 00:07:18,160 --> 00:07:20,535 Gusto mo mabigla malaman na ang mga linya sa kanang 153 00:07:20,535 --> 00:07:22,310 ang ipinapakita ng parehong bagay? 154 00:07:22,310 --> 00:07:26,140 >> Kaya ito ay tinatawag na: o kung minsan tinatawag na ang tatlong bagay operator. 155 00:07:26,140 --> 00:07:27,450 At ito ay medyo cool. 156 00:07:27,450 --> 00:07:29,110 Karaniwang Ito ay ginagamit bilang isang cute bilis ng kamay. 157 00:07:29,110 --> 00:07:35,777 >> Ngunit kung ano ang nagbibigay-daan sa iyo na gawin ay ang gayahin ang isang Kung Else sa talagang maliit, 158 00:07:35,777 --> 00:07:37,610 talagang trivially maikling kondisyong sanga. 159 00:07:37,610 --> 00:07:41,470 Hindi ka pangkalahatan na gustong gamitin: kung ikaw nagkaroon ng anim na linya ng code sa pagitan ng bawat set 160 00:07:41,470 --> 00:07:42,569 ng curly braces. 161 00:07:42,569 --> 00:07:44,360 Ngunit kung ikaw ay lamang paggawa ng isang mabilis na desisyon, 162 00:07:44,360 --> 00:07:47,520 kung ikaw ay pagpunta sa gawin ang isang bagay o sa iba pang at ito ay napaka-simple, 163 00:07:47,520 --> 00:07:52,240 maaaring ito ay isang halimbawa ng kung paano sa gawin ito na may: ang tatlong bagay operator. 164 00:07:52,240 --> 00:07:56,940 Kaya int x ay katumbas ng expression? 165 00:07:56,940 --> 00:07:59,470 Ang bagay matapos ang tanong mark ay kung ano ang x ni halaga 166 00:07:59,470 --> 00:08:02,690 ay kung expression ay totoo. 167 00:08:02,690 --> 00:08:05,330 >> Ang mga bagay na pagkatapos ng colon ay kung ano ang halaga ng x ni 168 00:08:05,330 --> 00:08:07,990 ay kung ang expression ay hindi totoo. 169 00:08:07,990 --> 00:08:11,510 Kaya ako nagtatanong sa sarili ko, ay totoo ang expression? 170 00:08:11,510 --> 00:08:13,870 Kung ito ay, magtalaga x ang halaga 5. 171 00:08:13,870 --> 00:08:16,619 Kung ito ay hindi, magtalaga x ang halaga 6. 172 00:08:16,619 --> 00:08:17,410 Muli, tulad ng sinabi ko. 173 00:08:17,410 --> 00:08:18,670 Ito ay karaniwang lamang ng isang cute na bilis ng kamay. 174 00:08:18,670 --> 00:08:20,430 At minsan kung ikaw ay maging talagang komportable sa ito, 175 00:08:20,430 --> 00:08:22,820 makikita mo gawin ito dahil mukhang uri ng mga cool sa iyong mga programa. 176 00:08:22,820 --> 00:08:25,710 Sa pangkalahatan ako pagtatanghal na ito sa mo na ngayon kaya hindi ka pamilyar sa mga ito 177 00:08:25,710 --> 00:08:26,990 kung makita mo ito. 178 00:08:26,990 --> 00:08:30,080 Ngunit tiyak na malaman na hindi mo na kailangang isulat ito sa alinman sa iyong mga code. 179 00:08:30,080 --> 00:08:33,246 Ngunit ito ay isang bagay na maging pamilyar sa, dahil makikita mo talaga magkasalubong 180 00:08:33,246 --> 00:08:36,130 snippet ng code dito at doon kung saan ito: syntax, 181 00:08:36,130 --> 00:08:39,120 AKA ang tatlong bagay operator, ay ginagamit. 182 00:08:39,120 --> 00:08:40,960 >> Kaya mabilis na buod sa ano conditionals ay, 183 00:08:40,960 --> 00:08:44,210 at kung ano ang mga pagpipilian ay magagamit sa iyo sa C. Mayroon ka Kung at kung-ibang, 184 00:08:44,210 --> 00:08:46,860 at kung iba kung, at iba pa. 185 00:08:46,860 --> 00:08:50,880 Maaari mong gamitin ang Boolean expression para sa mga gumawa ng mga desisyon. 186 00:08:50,880 --> 00:08:53,720 >> Sa switch pahayag na ginagamit mo hiwalay kaso upang gumawa ng mga desisyon. 187 00:08:53,720 --> 00:08:57,540 Gusto mong partikular na sabihin, kung ito ay isa, o kung ito ay dalawa, o kung ito ay tatlo, 188 00:08:57,540 --> 00:09:00,870 Kailangan kong gawin ang bagay na ito, o ang bagay na ito, o ang bagay na ito. 189 00:09:00,870 --> 00:09:04,660 At: maaari na ginagamit upang palitan ang napaka-simpleng kung-ibang mga sanga, 190 00:09:04,660 --> 00:09:08,490 o kung-ibang chains upang gumawa ng tingnan ang iyong code ng kaunti fancy. 191 00:09:08,490 --> 00:09:09,250 >> Ako Doug Lloyd. 192 00:09:09,250 --> 00:09:11,410 At ito ay CS50. 193 00:09:11,410 --> 00:09:12,959