1 00:00:00,000 --> 00:00:05,410 2 00:00:05,410 --> 00:00:07,640 >> Даг Lloyd: Добра, давайце пагаворым аб завес. 3 00:00:07,640 --> 00:00:10,015 Так завесы крута таму што яны дазваляюць вашу праграму 4 00:00:10,015 --> 00:00:12,050 для выканання радкоў кода зноў і зноў і зноў. 5 00:00:12,050 --> 00:00:15,600 Неаднаразова, без неабходнасці капіяваць і ўстаўце ці іншым паўтараць іх. 6 00:00:15,600 --> 00:00:17,630 Ёсць тры асноўных віды завес вы ўбачыце. 7 00:00:17,630 --> 00:00:21,010 Вы, верагодна, ёсць падстава выкарыстоўваць кожны, як вы прагрэс праз CS50. 8 00:00:21,010 --> 00:00:22,940 Некаторыя з гэтых завес даволі вам знаёмыя з нуля, 9 00:00:22,940 --> 00:00:25,814 так зноў, як мы зрабілі з умоўных, мы змесцім іх бок аб бок 10 00:00:25,814 --> 00:00:28,930 калі ёсць аналогія, мы можам маляваць. 11 00:00:28,930 --> 00:00:33,600 >> Па-першае гэта назаўжды ад драпін, што супастаўна з у той час як (праўда). 12 00:00:33,600 --> 00:00:35,390 Гэта тое, што мы называем бясконцы цыкл. 13 00:00:35,390 --> 00:00:38,560 Лініі кода паміж фігурнымі дужкі, гэтак жа, як кавалачкі галаваломкі, 14 00:00:38,560 --> 00:00:41,190 што падыходзіць ўнутры C з вечна блакаваць, 15 00:00:41,190 --> 00:00:45,290 будзе выконваць неаднаразова зверху ўніз, зноў і зноў і зноў, 16 00:00:45,290 --> 00:00:46,085 назаўжды. 17 00:00:46,085 --> 00:00:48,710 У рэшце рэшт, калі вы Успомніце абмеркаванне лагічных выразаў, 18 00:00:48,710 --> 00:00:51,060 праўда заўсёды дакладна. 19 00:00:51,060 --> 00:00:53,250 Так што, калі мы робім то так доўга, як дакладна 20 00:00:53,250 --> 00:00:58,227 у true-- гэта здаецца трохі silly-- праўда заўсёды дакладна, так што заўсёды буду працаваць. 21 00:00:58,227 --> 00:01:00,060 Гэта будзе працаваць вечна і не ва векі вечныя, пакуль мы 22 00:01:00,060 --> 00:01:02,900 знайсці спосаб вырвацца з яго з заяву перапынак, які зноў, 23 00:01:02,900 --> 00:01:06,350 мы бачылі некаторы час таму мы казалі аб пераходзе. 24 00:01:06,350 --> 00:01:08,725 >> Ці інакш проста забіць нашага Праграма, якая дарэчы, 25 00:01:08,725 --> 00:01:11,110 калі вы калі-небудзь апынецеся ў Сітуацыя з бясконцым цыклам 26 00:01:11,110 --> 00:01:13,484 і вы не ведаеце, як спыніць Ваша праграма працуе з. 27 00:01:13,484 --> 00:01:16,527 Проста націсніце кантроль і C і што заб'е вашу праграму для вас. 28 00:01:16,527 --> 00:01:18,360 Але гэта, зноў жа, называецца бясконцы цыкл. 29 00:01:18,360 --> 00:01:19,818 Гэта цыкл, які будзе працаваць вечна. 30 00:01:19,818 --> 00:01:22,570 31 00:01:22,570 --> 00:01:25,610 Цяпер, у той час як завесы не заўсёды бясконца, таму што таксама 32 00:01:25,610 --> 00:01:27,880 мы можам замяніць лагічнае Выраз з чымсьці 33 00:01:27,880 --> 00:01:29,867 трохі больш карысным, чым проста так. 34 00:01:29,867 --> 00:01:30,950 Дык вось яшчэ адзін прыклад. 35 00:01:30,950 --> 00:01:34,600 У той час як некаторыя Лагічнае Выраз, а затым фігурныя дужкі. 36 00:01:34,600 --> 00:01:38,310 Гэта даволі шмат, аналагічна не паўтараць да таго часу, з нуля. 37 00:01:38,310 --> 00:01:40,700 Хоць у секунду, я буду растлумачыць розніцу. 38 00:01:40,700 --> 00:01:44,310 >> Такім чынам, у C, калі лагічны выраз ўнутры той час цыклу 39 00:01:44,310 --> 00:01:47,980 праўдзіва, ліній Код паміж фігурнымі дужкамі 40 00:01:47,980 --> 00:01:51,900 будзе выконваць неаднаразова зноў і зноў і не скончана, пакуль лагічны выраз 41 00:01:51,900 --> 00:01:55,174 ацэньваецца як ілжывае. 42 00:01:55,174 --> 00:01:57,340 Так, напрыклад, вы маглі б ёсць нейкі лічыльнік. 43 00:01:57,340 --> 00:02:01,440 Так бы мовіць, вам у пачатку гэты цыкл сказаць INT х роўная нуля. 44 00:02:01,440 --> 00:02:06,370 У той час як х менш 100, зрабіць пару рэчы ўнутры, што фігурныя дужкі, 45 00:02:06,370 --> 00:02:10,570 то ў канцы вашага цыкла, вы кажаце, х плюс, плюс, вы павялічваючы х. 46 00:02:10,570 --> 00:02:13,360 У рэшце рэшт х атрымаеце 100 і вы 47 00:02:13,360 --> 00:02:15,760 спыніцца, таму што ў стане х менш 100 48 00:02:15,760 --> 00:02:19,416 больш не будзе дакладна, як толькі х роўны 100. 49 00:02:19,416 --> 00:02:21,820 100 складае не менш за 100. 50 00:02:21,820 --> 00:02:25,870 >> Зараз некалькі цьмяна, паводзіны драпіны блока назад. 51 00:02:25,870 --> 00:02:29,110 Так быць вельмі асцярожныя, калі гэта Ваш першы набег ў выкарыстанні завесы. 52 00:02:29,110 --> 00:02:33,630 У асноўным, паўтор да блока нуля 53 00:02:33,630 --> 00:02:35,970 будзе паўтарыць тое зноў і зноў і зноў, 54 00:02:35,970 --> 00:02:40,460 да выказвання, лагічны выраз у шасцікутнік дакладна. 55 00:02:40,460 --> 00:02:43,860 Так што будзем працягваць рабіць гэта, пакуль гэта не праўда. 56 00:02:43,860 --> 00:02:48,881 Між тым, гэты час цыкл працягваць рабіць гэта да таго часу, пакуль хлусня. 57 00:02:48,881 --> 00:02:51,630 Так што яны вельмі падобныя, але ёсць тое, што невялікае адрозненне толькі 58 00:02:51,630 --> 00:02:55,140 быць асцярожным, асабліва, як вы зробіце Ваш першы набег ад пераходу 59 00:02:55,140 --> 00:02:58,149 падрапаць ў с. 60 00:02:58,149 --> 00:03:00,190 Наступны выгляд завесы на самай справе вельмі падобныя. 61 00:03:00,190 --> 00:03:02,860 Гэта называецца рабіць падчас цыклу. 62 00:03:02,860 --> 00:03:07,060 Гэты цыкл будзе выконваць усе лініі кода паміж фігурнымі дужкамі адзін раз, 63 00:03:07,060 --> 00:03:09,530 а затым яна будзе правяраць лагічнае выраз. 64 00:03:09,530 --> 00:03:11,700 Калі лагічнае выраз праўдзіва, 65 00:03:11,700 --> 00:03:14,340 гэта будзе вярнуцца назад і паўтарыць што працэс зноў і зноў 66 00:03:14,340 --> 00:03:17,690 не раз, пакуль на лагічны выраз хлусня. 67 00:03:17,690 --> 00:03:23,370 Так што гэта пятля, у адрозненне ад час цыклу, з'яўляецца гарантуе выкананне, па меншай меры адзін раз. 68 00:03:23,370 --> 00:03:26,080 Гэта можа быць вельмі карысна. 69 00:03:26,080 --> 00:03:28,011 >> Нарэшце, у нас ёсць цыкл. 70 00:03:28,011 --> 00:03:30,010 Для завес з'яўляюцца свайго роду сінтаксічна непрывабнымі 71 00:03:30,010 --> 00:03:32,330 і там шмат усяго адбываецца тут, так што пацярпіце са мной 72 00:03:32,330 --> 00:03:34,640 як мы спрабуем зламаць і гэтыя кавалкі адзін ад аднаго. 73 00:03:34,640 --> 00:03:36,810 Наогул, выкарыстанне справу А для вас завесы 74 00:03:36,810 --> 00:03:40,136 хачу паўтарыць нешта пэўную колькасць разоў. 75 00:03:40,136 --> 00:03:42,010 У гэтым прыкладзе тут, У мяне ёсць блок паўтору 76 00:03:42,010 --> 00:03:44,010 з нуля, што аналагічна для цыклу 77 00:03:44,010 --> 00:03:47,340 у З, паўтараючы што-то ў 10 разоў. 78 00:03:47,340 --> 00:03:49,250 І для завесы на Злева, што 79 00:03:49,250 --> 00:03:51,410 складаецца з чатырох цыкл, які будзе рабіць тое ж самае. 80 00:03:51,410 --> 00:03:52,570 Гэта будзе ісці ў 10 разоў. 81 00:03:52,570 --> 00:03:56,720 Падлік ад нуля, мы павялічыць кожным праходзе цыклу. 82 00:03:56,720 --> 00:03:59,220 І мы працягваем рабіць што пакуль я не менш, чым 10. 83 00:03:59,220 --> 00:04:00,134 >> Дык што ж адбываецца? 84 00:04:00,134 --> 00:04:01,550 Там цэлая шмат кода там. 85 00:04:01,550 --> 00:04:03,424 Давайце разбіць яго што адбываецца крок 86 00:04:03,424 --> 00:04:05,684 за крокам, як мы капаем праз цыкл. 87 00:04:05,684 --> 00:04:08,350 Першае, што адбылося, пераменная лічыльніка цэнтр. 88 00:04:08,350 --> 00:04:11,970 Усе злева, што спачатку Кропка з коскі ў дужках 89 00:04:11,970 --> 00:04:12,970 выконваецца. 90 00:04:12,970 --> 00:04:15,180 У гэтым выпадку, мы кажучы INT я роўная 0. 91 00:04:15,180 --> 00:04:18,709 Аб'яву новую зменную з імем I, што зменных тыпу цэлае 92 00:04:18,709 --> 00:04:22,570 і мы кажам значэнне ўнутры што пераменная будзе роўная нулю. 93 00:04:22,570 --> 00:04:25,480 >> Другая рэч, што мы робім, мы адразу ж ацаніць 94 00:04:25,480 --> 00:04:26,750 лагічнае выраз. 95 00:04:26,750 --> 00:04:30,100 Лагічнае выраз у сярэдні з двух кропкай з коскі. 96 00:04:30,100 --> 00:04:31,360 Я менш, чым 10. 97 00:04:31,360 --> 00:04:32,410 Гэта праўда тут, праўда? 98 00:04:32,410 --> 00:04:36,030 Мы толькі што сказалі, я роўная нуля, і гэтак 0, складае менш за 10, 99 00:04:36,030 --> 00:04:38,040 і так што ўмова Праўда, і цяпер мы будзем 100 00:04:38,040 --> 00:04:40,640 перайсці да выканаць цела цыклу. 101 00:04:40,640 --> 00:04:41,480 Калі б гэта было ілжывым. 102 00:04:41,480 --> 00:04:46,380 Калі, напрыклад, я сказаў, а не я роўная 0 там я сказаў, што я роўны 15, 103 00:04:46,380 --> 00:04:47,820 Int я роўная 15. 104 00:04:47,820 --> 00:04:51,450 Ну 15 гэта не менш, чым 10, такім чынам, мы ніколі б не ўвайсці ў цела цыклу 105 00:04:51,450 --> 00:04:55,450 таму што лагічны выраз было б ацаніць як ілжывае. 106 00:04:55,450 --> 00:04:59,060 >> Пасля таго як мы прайсці праз зверху данізу, мы сутыкаемся, што закрыццё фігурную дужку, 107 00:04:59,060 --> 00:05:00,830 трэці рэч. 108 00:05:00,830 --> 00:05:03,840 Пераменная лічыльніка павялічваецца ці, хутчэй, лініі 109 00:05:03,840 --> 00:05:07,790 кода заявы пасля другі коскі ўнутры з 110 00:05:07,790 --> 00:05:10,500 для завес дужках выконваецца. 111 00:05:10,500 --> 00:05:13,250 Такім чынам, мы пачнем з кажучы INT я роўная 0. 112 00:05:13,250 --> 00:05:15,770 Затым мы правяраем, ці з'яўляецца лагічнае выраз праўдзіва. 113 00:05:15,770 --> 00:05:17,469 0 менш, 10 так, што гэта праўда. 114 00:05:17,469 --> 00:05:19,510 Такім чынам, мы збіраемся, каб працягнуць ў цела цыклу. 115 00:05:19,510 --> 00:05:22,676 Рэчы адбудзецца ўнутры цыклу, і калі мы сутыкаемся з, што зачыняе фігурная 116 00:05:22,676 --> 00:05:25,660 дужка, наступная рэч, якую мы зрабіць, мы кажам я плюс, плюс. 117 00:05:25,660 --> 00:05:28,860 Я была нулявы цяпер я адна. 118 00:05:28,860 --> 00:05:33,100 Затым мы зноў праверце значэнне лагічнае выраз у сярэдзіне. 119 00:05:33,100 --> 00:05:34,900 Адным з іх з'яўляецца менш за 10. 120 00:05:34,900 --> 00:05:38,325 Такім чынам, мы прайсці праз гэта апрацоўваць зноў і зноў. 121 00:05:38,325 --> 00:05:40,590 Мы дабяромся да закрыцця фігурная дужка зноў. 122 00:05:40,590 --> 00:05:44,090 Мы павялічваем я ад Ад 1 да 2 і ад 2 да 3. 123 00:05:44,090 --> 00:05:48,290 І гэтак далей, і гэтак далей, і гэтак далей, пакуль У рэшце рэшт я ў значэнне становіцца 10. 124 00:05:48,290 --> 00:05:49,950 Ёсць 10 менш за 10? 125 00:05:49,950 --> 00:05:51,200 Няма. 126 00:05:51,200 --> 00:05:53,800 Падлік ад 0, мы пайшлі праз 10 ітэрацый цыклу. 127 00:05:53,800 --> 00:05:57,204 Мы паўтаралі 10 разоў, толькі як мы гэта рабілі ў драпін блока. 128 00:05:57,204 --> 00:05:59,370 І так, што ў асноўным тое Працэс чатыры цыклу. 129 00:05:59,370 --> 00:06:01,630 >> Цяпер забіраючы фактычны код і пакласці яго 130 00:06:01,630 --> 00:06:05,120 ўсяго некалькі асноўных агульных заяў. 131 00:06:05,120 --> 00:06:06,550 Вось што адбываецца. 132 00:06:06,550 --> 00:06:09,290 Усе заявы ў пачаць спачатку выконваюцца. 133 00:06:09,290 --> 00:06:11,260 Вы можаце мець больш аднаго. 134 00:06:11,260 --> 00:06:13,440 Затым лагічны выраз правяраецца. 135 00:06:13,440 --> 00:06:17,850 Калі выраз праўдзіва, выканаць арганізму рамачную адзін раз. 136 00:06:17,850 --> 00:06:21,060 Калі выраз хлусня, мы зрабілі. 137 00:06:21,060 --> 00:06:23,040 Мы не выканаеце цела цыклу наогул. 138 00:06:23,040 --> 00:06:25,530 Пасля таго як мы пакаралі смерцю Цела цыкл раз, 139 00:06:25,530 --> 00:06:29,487 Затым мы робім тое, што ў частка прырашчэння там. 140 00:06:29,487 --> 00:06:31,820 Які, як правіла, будзе нешта накшталт I плюс, плюс 141 00:06:31,820 --> 00:06:34,510 ці нешта падобнае, што змяняе зменную лічыльнік. 142 00:06:34,510 --> 00:06:37,390 Затым, пасля таго як мы павялічваем, мы праверыць выраз зноў 143 00:06:37,390 --> 00:06:41,120 і паўтарыць гэтыя крокі зноў і зноў і не скончана, пакуль выраз 144 00:06:41,120 --> 00:06:42,890 больш не дакладна. 145 00:06:42,890 --> 00:06:44,469 >> Такім чынам, якія варыянты выкарыстання для цыкла? 146 00:06:44,469 --> 00:06:46,760 Выкарыстоўвайце выкарыстанні пятлю, калі Вы хочаце, каб паўтарыць цыкл 147 00:06:46,760 --> 00:06:51,200 невядомае колькасць часу, але гэта, магчыма, не можа працаваць усе. 148 00:06:51,200 --> 00:06:53,940 Сапраўды распаўсюджаным прыкладам нейкі час цыклу выкарыстоўваюцца 149 00:06:53,940 --> 00:06:56,480 гэта запусціць струмень кіравання для гульні. 150 00:06:56,480 --> 00:06:59,040 Вы не маглі б ведаць, як доўга Карыстальнік будзе гуляць, 151 00:06:59,040 --> 00:07:01,440 але вы хочаце захаваць рабіць тое ж самае. 152 00:07:01,440 --> 00:07:04,970 Абнаўленне пазіцыі розныя спрайты на дошцы. 153 00:07:04,970 --> 00:07:07,490 Вы хочаце, каб трымаць рэчы рухаецца ва ўсе часы, 154 00:07:07,490 --> 00:07:09,110 але вы не ведаеце, калі карыстальнік збіраецца спыніць гуляць 155 00:07:09,110 --> 00:07:10,450 ці калі яны збіраюцца бегчы з жыцця. 156 00:07:10,450 --> 00:07:12,741 Такім чынам, у той час як цыкл сапраўды добра нешта накшталт гэтага. 157 00:07:12,741 --> 00:07:14,130 Гэта добры прэцэдэнт. 158 00:07:14,130 --> 00:07:16,230 >> Для спраў, а завесы, гэта даволі падобныя. 159 00:07:16,230 --> 00:07:19,746 Вы хочаце, каб цыкл паўтарыць невядомы колькасць разоў, але па меншай меры адзін раз. 160 00:07:19,746 --> 00:07:22,370 Вы можаце выкарыстоўваць гэта для гульні таксама, але сапраўды агульны выпадак выкарыстання 161 00:07:22,370 --> 00:07:24,420 падахвочвае карыстальніка для ўваходу. 162 00:07:24,420 --> 00:07:28,609 Як правіла, вы маглі б сказаць што-то як, дайце мне станоўчае цэлае лік, 163 00:07:28,609 --> 00:07:30,650 і вы, магчыма, пакласці, што ўнутры рабіць падчас цыклу. 164 00:07:30,650 --> 00:07:33,900 Так што заўсёды будзе прасіць іх хоць бы адзін раз на працягу цэлага станоўчага. 165 00:07:33,900 --> 00:07:36,850 Калі яны даюць вам цэлае станоўчае лік, Вы маглі б вырвацца з пятлі. 166 00:07:36,850 --> 00:07:37,599 Вы маглі б зрабіць. 167 00:07:37,599 --> 00:07:39,900 Лагічнае выраз у зрабі, а можа быць ілжывым. 168 00:07:39,900 --> 00:07:41,137 >> І вы не будзеце прасіць іх зноў. 169 00:07:41,137 --> 00:07:44,470 Калі яны даюць вам нумар, дзе адмоўнае яны тыпу нейкае слова ці што-небудзь 170 00:07:44,470 --> 00:07:46,630 на самай справе не карысна Вы, вы, магчыма, выкарыстоўваць 171 00:07:46,630 --> 00:07:49,770 рабіць, а пятля, каб вярнуцца і зрабіць зноў і зноў, і зноў. 172 00:07:49,770 --> 00:07:52,410 Вы, безумоўна, хачу спытаць іх, каб даць вам некалькі разоў, 173 00:07:52,410 --> 00:07:56,350 але вы не ведаеце, колькі разоў Пасля гэтага яны могуць быць шкоднікі. 174 00:07:56,350 --> 00:08:00,540 І так рабіць, пакуль гэта вялікая выкарыстанне чахол для запыту карыстальніка для ўводу. 175 00:08:00,540 --> 00:08:03,060 І для завес выкарыстоўваць Справа, як правіла, калі 176 00:08:03,060 --> 00:08:06,230 Вы хочаце, каб паўтарыць цыкл дыскрэтны колькасць разоў, 177 00:08:06,230 --> 00:08:08,230 калі вы не маглі б ведаю, колькі разоў 178 00:08:08,230 --> 00:08:10,040 момант кампіляцыі праграмы. 179 00:08:10,040 --> 00:08:15,510 >> Так, напрыклад, можа быць, у вас ёсць праграма дзе вы падказаць карыстачу для шэрагу. 180 00:08:15,510 --> 00:08:17,660 І яны ўваходзяць 100. 181 00:08:17,660 --> 00:08:20,510 І тады ваш цыкл будзе у гэтым выпадку працаваць у 100 разоў. 182 00:08:20,510 --> 00:08:22,480 Ці, можа быць, яны ўваходзяць 1000 у праграме 183 00:08:22,480 --> 00:08:24,570 а затым запусціць пятлю 1000 разоў. 184 00:08:24,570 --> 00:08:26,987 Гэта пэўную колькасць разоў. 185 00:08:26,987 --> 00:08:28,820 Яны не абавязкова ведаю, што гэта лік 186 00:08:28,820 --> 00:08:31,010 гэта праграма момант складаецца. 187 00:08:31,010 --> 00:08:35,010 Гэта не тое, нейкі час цыкл дзе ён можа быць бясконцым. 188 00:08:35,010 --> 00:08:37,127 Гэта даволі шэрагу што вы проста не ведаю. 189 00:08:37,127 --> 00:08:39,210 Цяпер, хоць я выкладзеныя ўсе гэтыя прэцэдэнты, 190 00:08:39,210 --> 00:08:41,501 Вы павінны ведаць, што ў значнай шмат кожны акалічнасць, 191 00:08:41,501 --> 00:08:44,110 Вы можаце памяняць усе тры з гэтых завес. 192 00:08:44,110 --> 00:08:46,890 Вы можаце выкарыстоўваць цыкл, дзе вы у адваротным выпадку выкарыстоўваць час цыклу. 193 00:08:46,890 --> 00:08:49,860 Вы можаце выкарыстоўваць цыкл дзе гэта Вы б выкарыстоўваць рабіць падчас цыкла і гэтак далей. 194 00:08:49,860 --> 00:08:53,680 Гэта можа быць крыху больш складана часам, дык увогуле гэта добрая практыка 195 00:08:53,680 --> 00:08:55,140 прытрымлівацца тыповага выкарыстання. 196 00:08:55,140 --> 00:08:57,599 Выкарыстоўвайце рабіць падчас цыклу, калі вам хацеў што-то калі-то, па меншай меры. 197 00:08:57,599 --> 00:09:00,514 Выкарыстоўвайце для цыклу, калі вы хочаце зрабіць што-то пэўную колькасць разоў. 198 00:09:00,514 --> 00:09:03,730 У рэшце рэшт, менавіта таму ёсць тры розных выгляду завес. 199 00:09:03,730 --> 00:09:06,172 >> Такім чынам, яны могуць быць выкарыстаны ў правільным кантэксце. 200 00:09:06,172 --> 00:09:07,880 Але вы можаце памяняць іх, калі хочаце. 201 00:09:07,880 --> 00:09:10,790 Калі вы адчуваеце сябе камфортна з завес у той час як і вы заўсёды хочаце, каб выкарыстоўваць падчас цыклаў. 202 00:09:10,790 --> 00:09:12,623 Гэта тое, што Вы можаце зрабіць, хоць ён 203 00:09:12,623 --> 00:09:15,590 можа быць трохі сінтаксічна складана, калі для контуру 204 00:09:15,590 --> 00:09:17,850 было б нашмат прасцей. 205 00:09:17,850 --> 00:09:21,100 >> Мяне клічуць Дуг Лойд і гэта CS50. 206 00:09:21,100 --> 00:09:22,688