1 00:00:07,370 --> 00:00:09,760 [Powered by Google Translate] Tommy MACWILLIAM: sabihin makipag-usap tungkol sa mga loop, ang isa sa mga karaniwang 2 00:00:09,760 --> 00:00:13,380 programming constructs na namin makita ang buong CS50. 3 00:00:13,380 --> 00:00:15,570 Gagamitin namin ang mga loop kapag gusto namin upang magsagawa ng 4 00:00:15,570 --> 00:00:17,200 gawain higit sa isang beses. 5 00:00:17,200 --> 00:00:20,700 Halimbawa, maaari naming gusto upang i-print ang "hi" 100 beses o print 6 00:00:20,700 --> 00:00:22,700 ang lahat ng mga titik ng alpabeto. 7 00:00:22,700 --> 00:00:26,030 Sa parehong mga kaso na ito, mayroon kaming isang bagay na gusto naming gawin 8 00:00:26,030 --> 00:00:28,700 maraming beses, i-print ang isang bagay. 9 00:00:28,700 --> 00:00:31,970 Gayunpaman, kung ano-print namin sa bawat beses na ay maaaring mag-iba. 10 00:00:31,970 --> 00:00:34,530 Upang maaari naming gawin ang isang bagay na bahagyang naiiba sa bawat 11 00:00:34,530 --> 00:00:37,820 -ulit, o patakbuhin sa pamamagitan, ng loop. 12 00:00:37,820 --> 00:00:41,280 Gagamitin namin ang tatlong iba't ibang mga uri ng mga loop sa C, habang 13 00:00:41,280 --> 00:00:44,700 loop, para sa mga loop, at gawin habang loop. 14 00:00:44,700 --> 00:00:47,850 Kahit na ang mga tatlong uri ng loop ay may iba't ibang mga syntax, 15 00:00:47,850 --> 00:00:50,630 ang mga ideya sa likod ng mga ito ay ang parehong. 16 00:00:50,630 --> 00:00:53,930 Susubukan naming tukuyin ang ilang mga bloke ng code sa loob ng mga kulot tirante, 17 00:00:53,930 --> 00:00:57,810 tinatawag na katawan ng loop, na gusto naming ipatupad ang 18 00:00:57,810 --> 00:00:59,790 ilang bilang ng beses. 19 00:00:59,790 --> 00:01:03,370 Sa pamamagitan ng pagbabago ng halaga ng variable na ginamit sa katawan, namin 20 00:01:03,370 --> 00:01:07,570 maaaring gumawa ang aming loop gawin ang isang bagay ibang sa bawat oras na ito patakbuhin ang. 21 00:01:07,570 --> 00:01:10,750 Sa anumang loop na isulat namin, kailangan din namin upang magpasya kapag ang 22 00:01:10,750 --> 00:01:12,400 loop ay hihinto sa pagtakbo. 23 00:01:12,400 --> 00:01:15,650 Kung hindi namin gawin iyon, ang aming mapagkakatiwalaan computer ay patuloy 24 00:01:15,650 --> 00:01:19,040 patakbuhin na loop hanggang pumatay namin ang programa. 25 00:01:19,040 --> 00:01:22,490 Sa simula, maaari naming gamitin ang umuulit na n beses 26 00:01:22,490 --> 00:01:24,600 harangan upang lumikha ng isang loop. 27 00:01:24,600 --> 00:01:28,200 Ang lahat ng mga piraso sa loob ng isang bloke na sinabi umuulit 10 28 00:01:28,200 --> 00:01:30,130 ay magpatakbo ng 10 beses. 29 00:01:30,130 --> 00:01:34,160 At pagkatapos, nais naming lumipat sa ng mga piraso pagkatapos na loop. 30 00:01:34,160 --> 00:01:38,140 Kaya ang aming stop kundisyon lamang, ang block na ito ay 31 00:01:38,140 --> 00:01:39,830 magpatakbo ng mga 10 beses. 32 00:01:39,830 --> 00:01:43,900 Kaya sabihin muling likhain ito sa C. Sa order para sa simula upang matiyak 33 00:01:43,900 --> 00:01:46,920 na ang mga piraso sa loob ng bloke ng paulit-ulit ay pinaandar 34 00:01:46,920 --> 00:01:51,180 eksaktong 10 beses, sa simula ay kailangang subaybayan ng bawat 35 00:01:51,180 --> 00:01:53,750 pagpapatupad ng bloke ng paulit-ulit. 36 00:01:53,750 --> 00:01:56,790 Upang subaybayan ng kung gaano karaming beses ang aming loop katawan ay 37 00:01:56,790 --> 00:02:00,360 pinaandar, sabihin lumikha ng isang variable na tinatawag na i. 38 00:02:00,360 --> 00:02:03,400 Sisimulan naming i-off ang sa zero, dahil sa aming loop 39 00:02:03,400 --> 00:02:04,650 ay hindi pa patakbuhin ang. 40 00:02:10,009 --> 00:02:10,949 Ayos 41 00:02:10,949 --> 00:02:15,560 Ngayon gagamitin namin ang habang keyword upang simulan ang aming loop. 42 00:02:20,100 --> 00:02:24,180 Ngayon kailangan nating malaman kapag ang aming loop ay titigil, ngunit 43 00:02:24,180 --> 00:02:26,730 sabihin iwanan ito para sa ngayon at pagkatapos ay bumalik dito. 44 00:02:30,970 --> 00:02:32,150 Ayos lang. 45 00:02:32,150 --> 00:02:35,260 Inside ng aming loop, sabihin lang i-print ang isang mensahe, tulad ng 46 00:02:35,260 --> 00:02:38,535 "Hi." Maaari naming gamitin ang printf function para sa. 47 00:02:48,400 --> 00:02:49,230 Ayos lang. 48 00:02:49,230 --> 00:02:54,210 Kaya ngayon itinatala namin na ulit ng katawan ng loop ay 49 00:02:54,210 --> 00:02:55,750 ay pinaandar. 50 00:02:55,750 --> 00:03:00,320 Maaari naming gawin na sa pamamagitan ng pagdaragdag ng 1 sa, o incrementing, ang aming counter 51 00:03:00,320 --> 00:03:01,740 variable, i. 52 00:03:01,740 --> 00:03:09,180 Upang gawin iyon, maaari naming sabihin i katumbas i plus 1, o higit pa 53 00:03:09,180 --> 00:03:16,520 lamang, i plus plus. 54 00:03:16,520 --> 00:03:17,320 Mahusay. 55 00:03:17,320 --> 00:03:21,810 Kaya ngayon maaari naming makita na ang bawat oras ang aming loop ay tumakbo, ang aming 56 00:03:21,810 --> 00:03:24,500 counter variable napupunta up ng isa. 57 00:03:24,500 --> 00:03:29,410 Kaya alam namin eksakto kung gaano karaming mga iterations namin na magpatakbo ng sa ngayon. 58 00:03:29,410 --> 00:03:31,630 Pagkatapos ng isang pag-ulit ng loop, ang aming halaga 59 00:03:31,630 --> 00:03:34,270 ng ay i maging 1. 60 00:03:34,270 --> 00:03:37,460 Pagkatapos ng dalawang iterations, ay i 2. 61 00:03:37,460 --> 00:03:42,640 At pagkatapos ng 10 iterations, i maging 10. 62 00:03:42,640 --> 00:03:46,780 Kaya, kung gusto naming patakbuhin ang loop eksaktong 10 beses, pagkatapos ay 63 00:03:46,780 --> 00:03:49,240 ito ay kapag gusto naming upang ihinto. 64 00:03:49,240 --> 00:03:53,860 Kaya gusto namin upang patakbuhin ang loop habang i ay mas mababa sa 10, at 65 00:03:53,860 --> 00:03:57,630 na eksakto kung ano ang makikita namin magsulat, habang i 66 00:03:57,630 --> 00:04:02,450 ay mas mababa sa 10. 67 00:04:02,450 --> 00:04:06,380 Ang kundisyong ito ay mukhang tulad ng ang mga kondisyon na aming ginamit sa kung 68 00:04:06,380 --> 00:04:07,830 pang tao bloke. 69 00:04:07,830 --> 00:04:11,690 Matapos ang katawan ng aming mga loop ay pinaandar, ang programa aming 70 00:04:11,690 --> 00:04:14,690 ay tumalon pabalik sa kundisyon loop. 71 00:04:14,690 --> 00:04:17,290 Kung ang kondisyon ay totoo, pagkatapos ay ang katawan ng 72 00:04:17,290 --> 00:04:18,990 loop ay muling tumakbo. 73 00:04:18,990 --> 00:04:22,190 Kung ang kondisyon ay hindi na totoo, at pagkatapos ay ang aming loop ay hindi magiging 74 00:04:22,190 --> 00:04:25,700 patakbuhin ito at ay lumipat sa sa susunod na linya ng code 75 00:04:25,700 --> 00:04:27,876 sa ilalim ng aming loop. 76 00:04:27,876 --> 00:04:28,550 Ayos lang. 77 00:04:28,550 --> 00:04:30,740 Kaya sabihin kumuha ng isang pagtingin sa isang pangalawang uri ng 78 00:04:30,740 --> 00:04:33,000 loop, para sa loop. 79 00:04:33,000 --> 00:04:37,310 Susunod sa habang ang keyword, sa mga panaklong, nagkaroon kami ng isang bagay, 80 00:04:37,310 --> 00:04:39,840 kondisyon na kailangan totoo para sa 81 00:04:39,840 --> 00:04:42,010 loop katawan upang tumakbo. 82 00:04:42,010 --> 00:04:45,440 Iyon ay nangangahulugan na namin ay may upang lumikha ng aming counter variable sa labas 83 00:04:45,440 --> 00:04:48,760 ng loop at tandaan na dagdagan ito sa isang punto 84 00:04:48,760 --> 00:04:51,050 sa loob ng loop. 85 00:04:51,050 --> 00:04:54,320 Ang mga header para sa aming para sa loop, sa kabilang banda, ay may tatlong 86 00:04:54,320 --> 00:04:58,510 bahagi, ang bawat isa ay pinaghiwalay na may semicolon. 87 00:04:58,510 --> 00:05:01,950 Sa aming unang ikatlong, maaari naming ipinapahayag ang anumang counter o katulong 88 00:05:01,950 --> 00:05:05,000 variable nais naming gamitin sa aming loop. 89 00:05:05,000 --> 00:05:07,350 Sa pagsasagawa, ito ay maaaring talagang kapaki-pakinabang. 90 00:05:07,350 --> 00:05:10,590 Hindi namin talagang kailangan na variable, i, pagkatapos ng aming habang 91 00:05:10,590 --> 00:05:13,650 loop ay tumakbo, kaya namin talagang hindi dapat na idedeklara ito 92 00:05:13,650 --> 00:05:15,810 sa labas ng loop. 93 00:05:15,810 --> 00:05:19,080 Ang ikalawang ikatlong ay ang kondisyon na dapat maging totoo 94 00:05:19,080 --> 00:05:21,850 para sa katawan na pinaandar muli, tulad ng 95 00:05:21,850 --> 00:05:23,330 sa aming habang loop. 96 00:05:23,330 --> 00:05:26,350 Sa aming huling ikatlong, maaari naming patakbuhin ang isang pahayag na iyon ay 97 00:05:26,350 --> 00:05:30,270 isinasagawa pagkatapos ng bawat pag-ulit ng loop, kaya wala kaming 98 00:05:30,270 --> 00:05:32,710 upang bumuo ng ito sa katawan ng loop. 99 00:05:32,710 --> 00:05:38,390 Kaya sabihin magsulat ng isang para sa loop na binibilang down mula 5 hanggang 1. 100 00:05:38,390 --> 00:05:41,790 Sisimulan naming may para sa keyword. 101 00:05:41,790 --> 00:05:44,680 Maaari naming lumikha ng isang counter variable sa unang, na kung saan bibigyan namin 102 00:05:44,680 --> 00:05:47,840 nakatakda sa 5 oras na ito dahil kami ay pagbibilang pababa, 103 00:05:47,840 --> 00:05:50,110 sinundan sa pamamagitan ng isang tuldok-kuwit. 104 00:05:50,110 --> 00:05:53,660 Susunod ay aming kalagayan, na magpapadala kami bumalik. 105 00:05:53,660 --> 00:05:57,540 Ikatlo, nais naming sa pagbawas ng aming counter variable pagkatapos 106 00:05:57,540 --> 00:05:59,620 sa bawat pag-ulit ng loop. 107 00:05:59,620 --> 00:06:04,740 Kaya sa halip na sinasabi i plus plus, makikita namin sabihin i minus minus. 108 00:06:04,740 --> 00:06:05,300 Ayos lang. 109 00:06:05,300 --> 00:06:09,490 Kaya gusto namin ang katawan ng loop sa patakbuhin habang i pa rin 110 00:06:09,490 --> 00:06:11,960 higit sa 0. 111 00:06:11,960 --> 00:06:16,160 Sa katawan ng loop, sabihin i-print ang halaga ng i. 112 00:06:16,160 --> 00:06:20,480 Upang gawin ito, gagamitin namin gamitin ang printf function na, gamit ang% d 113 00:06:20,480 --> 00:06:21,650 placeholder. 114 00:06:21,650 --> 00:06:24,820 Tandaan, ang placeholder na ay pinalitan ng 115 00:06:24,820 --> 00:06:27,040 halaga ng i. 116 00:06:27,040 --> 00:06:32,060 Sa wakas, sabihin magdagdag ng statement pagkatapos ng aming para sa loop. 117 00:06:32,060 --> 00:06:35,850 Kapag nagpatakbo kami ng loop na ito, ay i magsimula sa 5, 118 00:06:35,850 --> 00:06:38,070 kaya 5 ay ipi-print. 119 00:06:38,070 --> 00:06:42,000 Sandaling i nakakakuha ng sa 0, ang pagpapatuloy kundisyon, ay i 120 00:06:42,000 --> 00:06:44,450 mas malaki kaysa sa 0, ay hindi na hold ang. 121 00:06:44,450 --> 00:06:47,330 Kaya aming loop ay titigil execute, at ipapakita namin makita ang 122 00:06:47,330 --> 00:06:49,850 statement pagkatapos ng loop. 123 00:06:49,850 --> 00:06:51,340 Kaya natin patakbuhin ang code na ito. 124 00:06:51,340 --> 00:06:52,700 Una, makikita namin ipunin ang isang 125 00:06:52,700 --> 00:06:56,460 countdown.c may gumawa ng countdown. 126 00:06:56,460 --> 00:06:59,320 Ngayon, maaari naming patakbuhin ang code na ito sa. / Countdown. 127 00:07:02,340 --> 00:07:06,040 Sa parehong habang loop at para sa mga loop, ang aming pagpapatuloy 128 00:07:06,040 --> 00:07:09,010 kondisyon ay naka-check bago ang katawan 129 00:07:09,010 --> 00:07:10,960 ng loop ay pinaandar. 130 00:07:10,960 --> 00:07:13,840 Na nangangahulugan na, kung ang aming mga kondisyon ay hindi simula 131 00:07:13,840 --> 00:07:18,100 totoo, pagkatapos ang katawan ng aming mga loop ay hindi kailanman ay tumakbo. 132 00:07:18,100 --> 00:07:22,060 Kaya minsan ito ay kapaki-pakinabang upang suriin ang kundisyon matapos ang 133 00:07:22,060 --> 00:07:25,150 katawan ng loop sa halip kaysa bago ito. 134 00:07:25,150 --> 00:07:28,270 Kaya sabihin magsulat ng isang loop upang i-prompt ang user para sa isang numero 135 00:07:28,270 --> 00:07:30,990 hanggang isang positibong numero ay ibinigay. 136 00:07:30,990 --> 00:07:34,740 Kung ang gumagamit input ng negatibong numero, magpapadala kami gusto mong hilingin ang mga ito 137 00:07:34,740 --> 00:07:36,260 para sa isa pang numero. 138 00:07:36,260 --> 00:07:38,940 Kaya makikita namin gusto ang pagsenyas na ito sa loob ng 139 00:07:38,940 --> 00:07:41,050 katawan off loop. 140 00:07:41,050 --> 00:07:44,730 Gayunpaman, kapag ang loop ay tumatakbo sa unang pagkakataon, ang user 141 00:07:44,730 --> 00:07:46,750 ay hindi ibinigay sa amin ang bilang ay. 142 00:07:46,750 --> 00:07:49,640 Kaya ito ay hindi magkaroon ng kahulugan upang suriin kung ito ay positibo. 143 00:07:49,640 --> 00:07:54,020 Sa halip, makikita namin nais na suriin ang numero pagkatapos ng katawan ng 144 00:07:54,020 --> 00:07:55,720 loop ay tumakbo. 145 00:07:55,720 --> 00:08:00,310 Maaari naming gawin ito na may isang Do habang loop. 146 00:08:00,310 --> 00:08:03,560 Una, namin lumikha ng isang variable, n, na hold ang 147 00:08:03,560 --> 00:08:05,230 input ng user. 148 00:08:05,230 --> 00:08:09,960 Ngayon, gagamitin namin ang Do keyword, sinundan sa pamamagitan ng mga kulot tirante na 149 00:08:09,960 --> 00:08:12,930 ay magsimula ang katawan ng aming mga loop. 150 00:08:12,930 --> 00:08:16,230 Sa katawan, maaari naming i-prompt ang user para sa isang numero na may 151 00:08:16,230 --> 00:08:18,480 GetInt function. 152 00:08:18,480 --> 00:08:23,230 Ngayon, gusto namin ang katawan ng loop na ito upang maisagawa muli kung 153 00:08:23,230 --> 00:08:28,370 ang user-type ng isang negatibong numero, kaya ipapakita namin sabihin habang n 154 00:08:28,370 --> 00:08:30,420 ay mas mababa kaysa sa 0. 155 00:08:30,420 --> 00:08:33,140 Pansinin ang semicolon dito matapos ang pahayag ng habang. 156 00:08:38,909 --> 00:08:40,679 Kaya natin patakbuhin ang code na ito. 157 00:08:40,679 --> 00:08:44,780 Una, magpapadala kami makatipon ito gumawa ng positibong. 158 00:08:44,780 --> 00:08:49,340 Ngayon ay maaari naming patakbuhin ang program na may. / Positibong. 159 00:08:49,340 --> 00:08:52,660 Kung bigyan namin ang program na ito sa isang negatibong numero, tulad ng mga negatibong 160 00:08:52,660 --> 00:08:56,560 4, pagkatapos makikita namin prompt muli para sa isang numero dahil 161 00:08:56,560 --> 00:09:00,490 kalagayan ng aming Do habang loop ay totoo. 162 00:09:00,490 --> 00:09:04,690 Sa sandaling aming magbigay ng isang positibong numero, tulad ng 8, pagkatapos ang 163 00:09:04,690 --> 00:09:08,560 kalagayan ng aming Do habang loop ay hindi na totoo. 164 00:09:08,560 --> 00:09:12,080 Kaya loop ay hindi pinaandar muli. 165 00:09:12,080 --> 00:09:15,290 At na ito para sa tatlong mga uri ng mga loop gagamitin namin sa C. 166 00:09:15,290 --> 00:09:18,840 Ang pangalan ko ay Tommy, at ito ay CS50.