1 00:00:00,000 --> 00:00:05,410 2 00:00:05,410 --> 00:00:07,640 >> DOUG LLOYD: Allt í lagi, svo við skulum tala um lykkjur. 3 00:00:07,640 --> 00:00:10,015 Svo lykkjur eru góður af kaldur vegna þess að þeir leyfa program 4 00:00:10,015 --> 00:00:12,050 að framkvæma línur af kóða aftur og aftur og aftur. 5 00:00:12,050 --> 00:00:15,600 Endurtekið án þess að þurfa að afrita og líma eða annars endurtaka þau. 6 00:00:15,600 --> 00:00:17,630 Það eru þrjár helstu konar lykkjur sem þú sérð. 7 00:00:17,630 --> 00:00:21,010 Þú munt sennilega hafa tækifæri til að nota hver eins og þú framfarir í gegnum CS50. 8 00:00:21,010 --> 00:00:22,940 Sum þessara lykkjur eru nokkuð þekki þig frá grunni, 9 00:00:22,940 --> 00:00:25,814 svo aftur, eins og við gerðum með conditionals, við munum setja þá upp hlið við hlið 10 00:00:25,814 --> 00:00:28,930 ef það er hliðstæðan við getum draga. 11 00:00:28,930 --> 00:00:33,600 >> Fyrst er að eilífu frá grunni, sem jafnast á við á meðan (satt). 12 00:00:33,600 --> 00:00:35,390 Þetta er það sem við köllum óendanlega lykkju. 13 00:00:35,390 --> 00:00:38,560 Línurnar kóða milli hrokkið axlabönd, líkt og stykki púsluspil 14 00:00:38,560 --> 00:00:41,190 að passa inni í C af eilífu loka, 15 00:00:41,190 --> 00:00:45,290 mun framkvæma ítrekað frá toppi til botn, aftur og aftur og aftur, 16 00:00:45,290 --> 00:00:46,085 að eilífu. 17 00:00:46,085 --> 00:00:48,710 Eftir allt saman, ef þú manst okkar umfjöllun um Boolean tjáning, 18 00:00:48,710 --> 00:00:51,060 satt er alltaf satt. 19 00:00:51,060 --> 00:00:53,250 Þannig að ef við erum að gera eitthvað svo lengi sem sannur 20 00:00:53,250 --> 00:00:58,227 er true-- það virðist svolítið silly-- satt er alltaf satt, svo það verður alltaf að keyra. 21 00:00:58,227 --> 00:01:00,060 Það verður keyrt eilífu og aldur og ævi þar til við 22 00:01:00,060 --> 00:01:02,900 finna leið til að brjótast út úr því með brjótast yfirlýsingu, sem aftur, 23 00:01:02,900 --> 00:01:06,350 við sáum smá stund síðan við var að tala um skipta. 24 00:01:06,350 --> 00:01:08,725 >> Eða annars bara drepa okkar program, sem fyrir tilviljun, 25 00:01:08,725 --> 00:01:11,110 ef þú finnur alltaf sjálfur í Ástandið með óendanlega lykkju 26 00:01:11,110 --> 00:01:13,484 og þú veist ekki hvernig á að stöðva program frá hlaupandi. 27 00:01:13,484 --> 00:01:16,527 Bara högg stjórn og C og að drepa program fyrir þig. 28 00:01:16,527 --> 00:01:18,360 En þetta, aftur, er kallað óendanlega lykkju. 29 00:01:18,360 --> 00:01:19,818 Það er lykkja sem mun keyra að eilífu. 30 00:01:19,818 --> 00:01:22,570 31 00:01:22,570 --> 00:01:25,610 Nú, á meðan lykkjur eru ekki alltaf óendanlega, því einnig 32 00:01:25,610 --> 00:01:27,880 við getum skipta um Boolean tjáning með eitthvað 33 00:01:27,880 --> 00:01:29,867 aðeins meira gagni en bara satt. 34 00:01:29,867 --> 00:01:30,950 Svo hér er annað dæmi. 35 00:01:30,950 --> 00:01:34,600 Þó sumir Boolean tjáning og þá hrokkið axlabönd. 36 00:01:34,600 --> 00:01:38,310 Það er ansi mikið hliðstætt að endurtaka þangað til, frá grunni. 37 00:01:38,310 --> 00:01:40,700 Þótt í annað, ég útskýra muninn. 38 00:01:40,700 --> 00:01:44,310 >> Svo í C ef Boolean tjáningu inni á meðan lykkja 39 00:01:44,310 --> 00:01:47,980 metur að sanna, línurnar númer á milli hrokkið axlabönd 40 00:01:47,980 --> 00:01:51,900 mun framkvæma endurtekið aftur og aftur og aftur þangað til Boolean tjáningu 41 00:01:51,900 --> 00:01:55,174 metur að rangar. 42 00:01:55,174 --> 00:01:57,340 Svo til dæmis, þú gætir hafa einhvers konar borðið. 43 00:01:57,340 --> 00:02:01,440 Svo segja þér í upphafi Þessi lykkja segja int x jafnt núlli. 44 00:02:01,440 --> 00:02:06,370 Þó x er minna en 100, gera a par það inni að hrokkið axlabönd, 45 00:02:06,370 --> 00:02:10,570 þá í lok lykkja, þú segir x plús plús, þú ert incrementing x. 46 00:02:10,570 --> 00:02:13,360 Loksins x vilja fá að 100 og þú verður 47 00:02:13,360 --> 00:02:15,760 hætta vegna þess að ástand x er stærra en 100 48 00:02:15,760 --> 00:02:19,416 mun ekki lengur vera satt eins og fljótt og x er jafnt og 100. 49 00:02:19,416 --> 00:02:21,820 100 er ekki minna en 100. 50 00:02:21,820 --> 00:02:25,870 >> Nú nokkuð villast, hegðun af grunni blokk er snúið við. 51 00:02:25,870 --> 00:02:29,110 Svo vera mjög varkár ef þetta er Fyrsta skyndiárás inn nota lykkjur. 52 00:02:29,110 --> 00:02:33,630 Í grundvallaratriðum, the endurtaka þar blokk í grunni 53 00:02:33,630 --> 00:02:35,970 mun endurtaka eitthvað aftur og aftur og aftur, 54 00:02:35,970 --> 00:02:40,460 þar til tjáningar, sem Boolean tjáning í sexhyrningi er satt. 55 00:02:40,460 --> 00:02:43,860 Þannig að það verður að halda að gera það þar til það er satt. 56 00:02:43,860 --> 00:02:48,881 Á sama tíma, á meðan lykkja mun halda áfram að gera það þangað til það er ósatt. 57 00:02:48,881 --> 00:02:51,630 Svo þeir eru alveg svipuð, en það er þessi litla greinarmun bara 58 00:02:51,630 --> 00:02:55,140 að vera varkár af sérstaklega eins og þú gerir Fyrsta skyndiárás þinn frá breyting 59 00:02:55,140 --> 00:02:58,149 að klóra í c. 60 00:02:58,149 --> 00:03:00,190 Næsta konar lykkju er reyndar mjög svipuð. 61 00:03:00,190 --> 00:03:02,860 Það er kallað do while lykkju. 62 00:03:02,860 --> 00:03:07,060 Þessi lykkja mun framkvæma allar línur af kóða milli hrokkið axlabönd einu sinni, 63 00:03:07,060 --> 00:03:09,530 og þá mun athuga Boolean tjáningu. 64 00:03:09,530 --> 00:03:11,700 Ef Boolean tjáningu metur satt 65 00:03:11,700 --> 00:03:14,340 það mun fara til baka og endurtaka sem ferli aftur og aftur 66 00:03:14,340 --> 00:03:17,690 og aftur þangað til að Boolean tjáning metur false. 67 00:03:17,690 --> 00:03:23,370 Þannig að þetta lykkja, ólíkt while lykkju, er tryggt að hlaupa að minnsta kosti einu sinni. 68 00:03:23,370 --> 00:03:26,080 Þetta getur verið nokkuð gagnlegt. 69 00:03:26,080 --> 00:03:28,011 >> Loks höfum við til hliðar. 70 00:03:28,011 --> 00:03:30,010 Fyrir lykkjur eru eins konar setningafræðilega óaðlaðandi 71 00:03:30,010 --> 00:03:32,330 og það er mikið um að vera hér, svo bera með mér 72 00:03:32,330 --> 00:03:34,640 og við reynum og brjóta þessi stykki í sundur. 73 00:03:34,640 --> 00:03:36,810 Almennt er nota málið af a for lykkju er þér 74 00:03:36,810 --> 00:03:40,136 vil endurtaka eitthvað tilteknum fjölda skipta. 75 00:03:40,136 --> 00:03:42,010 Í þessu dæmi hér, Ég hef endurtekið blokk 76 00:03:42,010 --> 00:03:44,010 frá grunni, sem er hliðstætt for lykkju 77 00:03:44,010 --> 00:03:47,340 í C, endurtaka eitthvað 10 sinnum. 78 00:03:47,340 --> 00:03:49,250 Og til hliðar á vinstri þar sem 79 00:03:49,250 --> 00:03:51,410 er fjögurra lykkja sem myndi gera það sama. 80 00:03:51,410 --> 00:03:52,570 Þetta myndi fara 10 sinnum. 81 00:03:52,570 --> 00:03:56,720 Talið frá núlli, við hækka hvert skot lykkju. 82 00:03:56,720 --> 00:03:59,220 Og við höldum að gera það þangað til I er minni en 10. 83 00:03:59,220 --> 00:04:00,134 >> Svo gerist það? 84 00:04:00,134 --> 00:04:01,550 There er a heild einhver fjöldi af kóða þar. 85 00:04:01,550 --> 00:04:03,424 Við skulum brjóta hann niður til hvað er að gerast skref 86 00:04:03,424 --> 00:04:05,684 skref sem við grafa í gegnum for lykkju. 87 00:04:05,684 --> 00:04:08,350 The fyrstur hlutur sem gerðist er teljarinn breyta er sent. 88 00:04:08,350 --> 00:04:11,970 Allt vinstra megin við sem fyrst semíkomma inni í sviga 89 00:04:11,970 --> 00:04:12,970 er keyrð. 90 00:04:12,970 --> 00:04:15,180 Í þessu tilfelli, við erum segja int i jafngildir 0. 91 00:04:15,180 --> 00:04:18,709 Lýsa nýja breytu sem heitir i, sem breytur er gerð heiltala 92 00:04:18,709 --> 00:04:22,570 og við erum að segja verðmæti inni sem breyta er að fara að vera núll. 93 00:04:22,570 --> 00:04:25,480 >> The second hlutur sem við gerum er við þá strax meta 94 00:04:25,480 --> 00:04:26,750 Boolean tjáningu. 95 00:04:26,750 --> 00:04:30,100 Boolean tjáning er í miðja af tveimur semikommum. 96 00:04:30,100 --> 00:04:31,360 I er minni en 10. 97 00:04:31,360 --> 00:04:32,410 Það er satt hér, ekki satt? 98 00:04:32,410 --> 00:04:36,030 Ég sagði bara ég er jafn núll, og svo 0 er minna en 10, 99 00:04:36,030 --> 00:04:38,040 og svo að ástand er satt og við munum nú 100 00:04:38,040 --> 00:04:40,640 halda áfram að framkvæma líkama lykkju. 101 00:04:40,640 --> 00:04:41,480 Ef það var rangt. 102 00:04:41,480 --> 00:04:46,380 Ef, til dæmis, segir I stað þess að Ég jafngildir 0 þar sem ég sagði að ég jafngildir 15, 103 00:04:46,380 --> 00:04:47,820 int i jafngildir 15. 104 00:04:47,820 --> 00:04:51,450 Vel 15 er ekki minna en 10, þannig að við myndi aldrei komast inn í líkama lykkju 105 00:04:51,450 --> 00:04:55,450 vegna Boolean tjáningu það myndi meta það ósatt. 106 00:04:55,450 --> 00:04:59,060 >> Eftir að við að fara í gegnum frá toppur til botn, við lendum að loka hrokkið Brace, 107 00:04:59,060 --> 00:05:00,830 þriðja hlutur gerist. 108 00:05:00,830 --> 00:05:03,840 Teljarinn breyta er hækkaður, eða öllu heldur, línur 109 00:05:03,840 --> 00:05:07,790 af kóða á yfirlýsingu eftir Annað semíkomma innan í 110 00:05:07,790 --> 00:05:10,500 fyrir lykkjur sviga er keyrð. 111 00:05:10,500 --> 00:05:13,250 Svo við byrjum á segja int i jafngildir 0. 112 00:05:13,250 --> 00:05:15,770 Þá erum við að athuga hvort Boolean tjáning er satt. 113 00:05:15,770 --> 00:05:17,469 0 er minna en 10 svo það er satt. 114 00:05:17,469 --> 00:05:19,510 Þannig að við erum að fara að halda áfram inn í líkamann í lykkju. 115 00:05:19,510 --> 00:05:22,676 Það mun gerast inni í lykkju, og þegar við lendum í að loka hrokkið 116 00:05:22,676 --> 00:05:25,660 spelka, næsta sem við gera er að við segja að ég plús, plús. 117 00:05:25,660 --> 00:05:28,860 Ég var núll nú er ég einn. 118 00:05:28,860 --> 00:05:33,100 Þá, athuga við aftur gildi Boolean tjáning í miðjunni. 119 00:05:33,100 --> 00:05:34,900 Ein er minna en 10. 120 00:05:34,900 --> 00:05:38,325 Þannig að við munum fara í gegnum þetta ferlið aftur og aftur. 121 00:05:38,325 --> 00:05:40,590 Við munum komast að lokun hrokkið Brace aftur. 122 00:05:40,590 --> 00:05:44,090 Við munum hækka i frá 1 til 2 og frá 2 til 3. 123 00:05:44,090 --> 00:05:48,290 Og svo framvegis og svo framvegis og svo framvegis, þar til loksins gildi sem ég er verður 10. 124 00:05:48,290 --> 00:05:49,950 Er 10 minna en 10? 125 00:05:49,950 --> 00:05:51,200 Nei 126 00:05:51,200 --> 00:05:53,800 Talið frá 0, við höfum farið í gegnum 10 endurtekningar lykkju. 127 00:05:53,800 --> 00:05:57,204 Við höfum endurtekin 10 sinnum, bara eins og við gerðum í grunni blokk. 128 00:05:57,204 --> 00:05:59,370 Og svo er það í rauninni að Aðferð til fjögurra lykkju. 129 00:05:59,370 --> 00:06:01,630 >> Nú taka burt Raunveruleg kóða og setja það 130 00:06:01,630 --> 00:06:05,120 á aðeins grunnupplýsingar almennum yfirlýsingum. 131 00:06:05,120 --> 00:06:06,550 Hér er það sem gerist. 132 00:06:06,550 --> 00:06:09,290 Allar yfirlýsingar í byrja eru keyrð fyrst. 133 00:06:09,290 --> 00:06:11,260 Þú gætir haft fleiri en einn. 134 00:06:11,260 --> 00:06:13,440 Þá er Boolean tjáningu er köflóttur. 135 00:06:13,440 --> 00:06:17,850 Ef tjáning metur satt framkvæmdur lykkja einu sinni. 136 00:06:17,850 --> 00:06:21,060 Ef tjáning metur rangar, við erum að gera. 137 00:06:21,060 --> 00:06:23,040 Við framkvæma ekki Lík lykkju á öllum. 138 00:06:23,040 --> 00:06:25,530 Eftir að við höfum gengið frá líkami lykkja eitt sinn, 139 00:06:25,530 --> 00:06:29,487 við gerum þá hvað er í vöxtur hluti þar. 140 00:06:29,487 --> 00:06:31,820 Sem er yfirleitt að fara að vera eitthvað eins og i plús, auk 141 00:06:31,820 --> 00:06:34,510 eða eitthvað svoleiðis, sem breytir a gegn breytu. 142 00:06:34,510 --> 00:06:37,390 Þá, eftir að við hækka, við athuga tjáningu aftur 143 00:06:37,390 --> 00:06:41,120 og endurtaka þessi skref aftur og aftur og aftur þangað til orðið er 144 00:06:41,120 --> 00:06:42,890 ekki lengur satt. 145 00:06:42,890 --> 00:06:44,469 >> Svo það eru nota tilvikum um lykkju? 146 00:06:44,469 --> 00:06:46,760 Notar þú notar while lykkju þegar þú vilt lykkju til að endurtaka 147 00:06:46,760 --> 00:06:51,200 óþekkt nokkrum sinnum, en það hugsanlega gæti ekki keyrt alla. 148 00:06:51,200 --> 00:06:53,940 A mjög algeng dæmi um a meðan lykkja notuð 149 00:06:53,940 --> 00:06:56,480 er að keyra stjórna flæði í leik. 150 00:06:56,480 --> 00:06:59,040 Þú might ekki vita hversu lengi notandi er að fara að spila, 151 00:06:59,040 --> 00:07:01,440 en þú vilt halda gera slíkt hið sama. 152 00:07:01,440 --> 00:07:04,970 Uppfæra stöðu ýmsar sprites á borðinu. 153 00:07:04,970 --> 00:07:07,490 Þú vilt halda það færa á öllum tímum, 154 00:07:07,490 --> 00:07:09,110 en þú veist ekki þegar notandi er að fara að hætta að spila 155 00:07:09,110 --> 00:07:10,450 eða þegar þeir eru að fara að keyra út af lífi. 156 00:07:10,450 --> 00:07:12,741 Svo er á meðan lykkja raun gott fyrir eitthvað svoleiðis. 157 00:07:12,741 --> 00:07:14,130 Það er gott að nota málið. 158 00:07:14,130 --> 00:07:16,230 >> Fyrir að gera á meðan lykkja, það er nokkuð svipað. 159 00:07:16,230 --> 00:07:19,746 Þú vilt lykkju til að endurtaka óþekkt nokkrum sinnum, en að minnsta kosti einu sinni. 160 00:07:19,746 --> 00:07:22,370 Þú gætir notað þetta fyrir leik of, en mjög algengar málið 161 00:07:22,370 --> 00:07:24,420 er vekur notandi til inntak. 162 00:07:24,420 --> 00:07:28,609 Almennt, gætir þú sagt eitthvað eins, gefa mér jákvæð heiltala, 163 00:07:28,609 --> 00:07:30,650 og þú gætir sett það inni í do while lykkju. 164 00:07:30,650 --> 00:07:33,900 Þannig að það verður alltaf að spyrja þá á kosti einu sinni fyrir jákvæða heiltölu. 165 00:07:33,900 --> 00:07:36,850 Ef þeir gefa þér jákvæða heiltölu, þú gætir brjóta út úr lykkja. 166 00:07:36,850 --> 00:07:37,599 Þú gætir verið að gera. 167 00:07:37,599 --> 00:07:39,900 The Boolean tjáning í sem gera á meðan gæti verið röng. 168 00:07:39,900 --> 00:07:41,137 >> Og þú munt ekki spyrja þá aftur. 169 00:07:41,137 --> 00:07:44,470 Ef þeir gefa þér neikvæð tala hvar þeir slá nokkur orð eða eitthvað sem er 170 00:07:44,470 --> 00:07:46,630 ekki mjög gagnlegt að þú, þú gætir notað 171 00:07:46,630 --> 00:07:49,770 ekki meðan lykkja til að fara til baka og gera það aftur og aftur og aftur. 172 00:07:49,770 --> 00:07:52,410 Þú vilt örugglega að spyrja þá að gefa þér númerið einu sinni, 173 00:07:52,410 --> 00:07:56,350 en þú veist ekki hversu oft eftir að þeir gætu verið meindýr. 174 00:07:56,350 --> 00:08:00,540 Og svo do meðan það er mikill notkun Rökin fyrir vekur notandi til inntak. 175 00:08:00,540 --> 00:08:03,060 Og fyrir lykkjur nota Málið er oftast þegar 176 00:08:03,060 --> 00:08:06,230 þú vilt að endurtaka lykkju stakur fjöldi af sinnum, 177 00:08:06,230 --> 00:08:08,230 þó að þú gætir ekki vita hversu oft 178 00:08:08,230 --> 00:08:10,040 Um leið og forritið er unnin. 179 00:08:10,040 --> 00:08:15,510 >> Svo til dæmis, kannski þú hafa a program þar sem þú hvetja notandann til fjölda. 180 00:08:15,510 --> 00:08:17,660 Og þeir fara inn 100. 181 00:08:17,660 --> 00:08:20,510 Og síðan þín fyrir lykkju mun í því tilviki að keyra 100 sinnum. 182 00:08:20,510 --> 00:08:22,480 Eða kannski þeir inn 1000 í forritinu 183 00:08:22,480 --> 00:08:24,570 og þá hlaupa lykkju 1.000 sinnum. 184 00:08:24,570 --> 00:08:26,987 Það er sérstök tala af sinnum. 185 00:08:26,987 --> 00:08:28,820 Þeir gera ekki endilega vita hvað að tala 186 00:08:28,820 --> 00:08:31,010 er stund program er unnin. 187 00:08:31,010 --> 00:08:35,010 Það er ekki eins og while lykkju þar sem það gæti verið óendanlega. 188 00:08:35,010 --> 00:08:37,127 Það er frekar að tala að þú bara veist það ekki. 189 00:08:37,127 --> 00:08:39,210 Nú jafnvel þó að ég hef lýst allar þessar nota tilvikum, 190 00:08:39,210 --> 00:08:41,501 þú ættir að vita að í nokkuð mikið á hverjum aðstæður, 191 00:08:41,501 --> 00:08:44,110 þú getur skipti öllu þrír af þessum lykkjur. 192 00:08:44,110 --> 00:08:46,890 Þú getur notað fyrir lykkju þar sem þú myndi annars nota while lykkju. 193 00:08:46,890 --> 00:08:49,860 Þú getur notað fyrir lykkju hvar sem þú vilt nota gera á meðan lykkja og svo framvegis. 194 00:08:49,860 --> 00:08:53,680 Það getur verið svolítið erfiður stundum, svo yfirleitt er það gott starf 195 00:08:53,680 --> 00:08:55,140 að fylgja dæmigerðu nota málið. 196 00:08:55,140 --> 00:08:57,599 Notaðu do while lykkju ef þú vildi eitthvað einu sinni, að minnsta kosti. 197 00:08:57,599 --> 00:09:00,514 Nota fyrir lykkju ef þú vilt gera eitthvað tiltekið nokkrum sinnum. 198 00:09:00,514 --> 00:09:03,730 Eftir allt saman, það er hvers vegna það eru þrjár mismunandi tegundir af lykkjur. 199 00:09:03,730 --> 00:09:06,172 >> Þannig að þeir geta vera notaður í réttu samhengi. 200 00:09:06,172 --> 00:09:07,880 En þú getur skipti þá ef þú vilt. 201 00:09:07,880 --> 00:09:10,790 Ef þú ert ánægð með meðan lykkjur og þú vilt alltaf að nota á meðan lykkjur. 202 00:09:10,790 --> 00:09:12,623 Það er eitthvað sem þú getur gert, þótt það 203 00:09:12,623 --> 00:09:15,590 gæti verið smá setningafræðilega erfiður, þar sem fyrir lykkja 204 00:09:15,590 --> 00:09:17,850 væri miklu meira einfalt. 205 00:09:17,850 --> 00:09:21,100 >> Mitt nafn er Doug Lloyd og þetta er CS50. 206 00:09:21,100 --> 00:09:22,688