Даг Lloyd: Добра, давайце пагаворым аб завес. Так завесы крута таму што яны дазваляюць вашу праграму для выканання радкоў кода зноў і зноў і зноў. Неаднаразова, без неабходнасці капіяваць і ўстаўце ці іншым паўтараць іх. Ёсць тры асноўных віды завес вы ўбачыце. Вы, верагодна, ёсць падстава выкарыстоўваць кожны, як вы прагрэс праз CS50. Некаторыя з гэтых завес даволі вам знаёмыя з нуля, так зноў, як мы зрабілі з умоўных, мы змесцім іх бок аб бок калі ёсць аналогія, мы можам маляваць. Па-першае гэта назаўжды ад драпін, што супастаўна з у той час як (праўда). Гэта тое, што мы называем бясконцы цыкл. Лініі кода паміж фігурнымі дужкі, гэтак жа, як кавалачкі галаваломкі, што падыходзіць ўнутры C з вечна блакаваць, будзе выконваць неаднаразова зверху ўніз, зноў і зноў і зноў, назаўжды. У рэшце рэшт, калі вы Успомніце абмеркаванне лагічных выразаў, праўда заўсёды дакладна. Так што, калі мы робім то так доўга, як дакладна у true-- гэта здаецца трохі silly-- праўда заўсёды дакладна, так што заўсёды буду працаваць. Гэта будзе працаваць вечна і не ва векі вечныя, пакуль мы знайсці спосаб вырвацца з яго з заяву перапынак, які зноў, мы бачылі некаторы час таму мы казалі аб пераходзе. Ці інакш проста забіць нашага Праграма, якая дарэчы, калі вы калі-небудзь апынецеся ў Сітуацыя з бясконцым цыклам і вы не ведаеце, як спыніць Ваша праграма працуе з. Проста націсніце кантроль і C і што заб'е вашу праграму для вас. Але гэта, зноў жа, называецца бясконцы цыкл. Гэта цыкл, які будзе працаваць вечна. Цяпер, у той час як завесы не заўсёды бясконца, таму што таксама мы можам замяніць лагічнае Выраз з чымсьці трохі больш карысным, чым проста так. Дык вось яшчэ адзін прыклад. У той час як некаторыя Лагічнае Выраз, а затым фігурныя дужкі. Гэта даволі шмат, аналагічна не паўтараць да таго часу, з нуля. Хоць у секунду, я буду растлумачыць розніцу. Такім чынам, у C, калі лагічны выраз ўнутры той час цыклу праўдзіва, ліній Код паміж фігурнымі дужкамі будзе выконваць неаднаразова зноў і зноў і не скончана, пакуль лагічны выраз ацэньваецца як ілжывае. Так, напрыклад, вы маглі б ёсць нейкі лічыльнік. Так бы мовіць, вам у пачатку гэты цыкл сказаць INT х роўная нуля. У той час як х менш 100, зрабіць пару рэчы ўнутры, што фігурныя дужкі, то ў канцы вашага цыкла, вы кажаце, х плюс, плюс, вы павялічваючы х. У рэшце рэшт х атрымаеце 100 і вы спыніцца, таму што ў стане х менш 100 больш не будзе дакладна, як толькі х роўны 100. 100 складае не менш за 100. Зараз некалькі цьмяна, паводзіны драпіны блока назад. Так быць вельмі асцярожныя, калі гэта Ваш першы набег ў выкарыстанні завесы. У асноўным, паўтор да блока нуля будзе паўтарыць тое зноў і зноў і зноў, да выказвання, лагічны выраз у шасцікутнік дакладна. Так што будзем працягваць рабіць гэта, пакуль гэта не праўда. Між тым, гэты час цыкл працягваць рабіць гэта да таго часу, пакуль хлусня. Так што яны вельмі падобныя, але ёсць тое, што невялікае адрозненне толькі быць асцярожным, асабліва, як вы зробіце Ваш першы набег ад пераходу падрапаць ў с. Наступны выгляд завесы на самай справе вельмі падобныя. Гэта называецца рабіць падчас цыклу. Гэты цыкл будзе выконваць усе лініі кода паміж фігурнымі дужкамі адзін раз, а затым яна будзе правяраць лагічнае выраз. Калі лагічнае выраз праўдзіва, гэта будзе вярнуцца назад і паўтарыць што працэс зноў і зноў не раз, пакуль на лагічны выраз хлусня. Так што гэта пятля, у адрозненне ад час цыклу, з'яўляецца гарантуе выкананне, па меншай меры адзін раз. Гэта можа быць вельмі карысна. Нарэшце, у нас ёсць цыкл. Для завес з'яўляюцца свайго роду сінтаксічна непрывабнымі і там шмат усяго адбываецца тут, так што пацярпіце са мной як мы спрабуем зламаць і гэтыя кавалкі адзін ад аднаго. Наогул, выкарыстанне справу А для вас завесы хачу паўтарыць нешта пэўную колькасць разоў. У гэтым прыкладзе тут, У мяне ёсць блок паўтору з нуля, што аналагічна для цыклу у З, паўтараючы што-то ў 10 разоў. І для завесы на Злева, што складаецца з чатырох цыкл, які будзе рабіць тое ж самае. Гэта будзе ісці ў 10 разоў. Падлік ад нуля, мы павялічыць кожным праходзе цыклу. І мы працягваем рабіць што пакуль я не менш, чым 10. Дык што ж адбываецца? Там цэлая шмат кода там. Давайце разбіць яго што адбываецца крок за крокам, як мы капаем праз цыкл. Першае, што адбылося, пераменная лічыльніка цэнтр. Усе злева, што спачатку Кропка з коскі ў дужках выконваецца. У гэтым выпадку, мы кажучы INT я роўная 0. Аб'яву новую зменную з імем I, што зменных тыпу цэлае і мы кажам значэнне ўнутры што пераменная будзе роўная нулю. Другая рэч, што мы робім, мы адразу ж ацаніць лагічнае выраз. Лагічнае выраз у сярэдні з двух кропкай з коскі. Я менш, чым 10. Гэта праўда тут, праўда? Мы толькі што сказалі, я роўная нуля, і гэтак 0, складае менш за 10, і так што ўмова Праўда, і цяпер мы будзем перайсці да выканаць цела цыклу. Калі б гэта было ілжывым. Калі, напрыклад, я сказаў, а не я роўная 0 там я сказаў, што я роўны 15, Int я роўная 15. Ну 15 гэта не менш, чым 10, такім чынам, мы ніколі б не ўвайсці ў цела цыклу таму што лагічны выраз было б ацаніць як ілжывае. Пасля таго як мы прайсці праз зверху данізу, мы сутыкаемся, што закрыццё фігурную дужку, трэці рэч. Пераменная лічыльніка павялічваецца ці, хутчэй, лініі кода заявы пасля другі коскі ўнутры з для завес дужках выконваецца. Такім чынам, мы пачнем з кажучы INT я роўная 0. Затым мы правяраем, ці з'яўляецца лагічнае выраз праўдзіва. 0 менш, 10 так, што гэта праўда. Такім чынам, мы збіраемся, каб працягнуць ў цела цыклу. Рэчы адбудзецца ўнутры цыклу, і калі мы сутыкаемся з, што зачыняе фігурная дужка, наступная рэч, якую мы зрабіць, мы кажам я плюс, плюс. Я была нулявы цяпер я адна. Затым мы зноў праверце значэнне лагічнае выраз у сярэдзіне. Адным з іх з'яўляецца менш за 10. Такім чынам, мы прайсці праз гэта апрацоўваць зноў і зноў. Мы дабяромся да закрыцця фігурная дужка зноў. Мы павялічваем я ад Ад 1 да 2 і ад 2 да 3. І гэтак далей, і гэтак далей, і гэтак далей, пакуль У рэшце рэшт я ў значэнне становіцца 10. Ёсць 10 менш за 10? Няма. Падлік ад 0, мы пайшлі праз 10 ітэрацый цыклу. Мы паўтаралі 10 разоў, толькі як мы гэта рабілі ў драпін блока. І так, што ў асноўным тое Працэс чатыры цыклу. Цяпер забіраючы фактычны код і пакласці яго ўсяго некалькі асноўных агульных заяў. Вось што адбываецца. Усе заявы ў пачаць спачатку выконваюцца. Вы можаце мець больш аднаго. Затым лагічны выраз правяраецца. Калі выраз праўдзіва, выканаць арганізму рамачную адзін раз. Калі выраз хлусня, мы зрабілі. Мы не выканаеце цела цыклу наогул. Пасля таго як мы пакаралі смерцю Цела цыкл раз, Затым мы робім тое, што ў частка прырашчэння там. Які, як правіла, будзе нешта накшталт I плюс, плюс ці нешта падобнае, што змяняе зменную лічыльнік. Затым, пасля таго як мы павялічваем, мы праверыць выраз зноў і паўтарыць гэтыя крокі зноў і зноў і не скончана, пакуль выраз больш не дакладна. Такім чынам, якія варыянты выкарыстання для цыкла? Выкарыстоўвайце выкарыстанні пятлю, калі Вы хочаце, каб паўтарыць цыкл невядомае колькасць часу, але гэта, магчыма, не можа працаваць усе. Сапраўды распаўсюджаным прыкладам нейкі час цыклу выкарыстоўваюцца гэта запусціць струмень кіравання для гульні. Вы не маглі б ведаць, як доўга Карыстальнік будзе гуляць, але вы хочаце захаваць рабіць тое ж самае. Абнаўленне пазіцыі розныя спрайты на дошцы. Вы хочаце, каб трымаць рэчы рухаецца ва ўсе часы, але вы не ведаеце, калі карыстальнік збіраецца спыніць гуляць ці калі яны збіраюцца бегчы з жыцця. Такім чынам, у той час як цыкл сапраўды добра нешта накшталт гэтага. Гэта добры прэцэдэнт. Для спраў, а завесы, гэта даволі падобныя. Вы хочаце, каб цыкл паўтарыць невядомы колькасць разоў, але па меншай меры адзін раз. Вы можаце выкарыстоўваць гэта для гульні таксама, але сапраўды агульны выпадак выкарыстання падахвочвае карыстальніка для ўваходу. Як правіла, вы маглі б сказаць што-то як, дайце мне станоўчае цэлае лік, і вы, магчыма, пакласці, што ўнутры рабіць падчас цыклу. Так што заўсёды будзе прасіць іх хоць бы адзін раз на працягу цэлага станоўчага. Калі яны даюць вам цэлае станоўчае лік, Вы маглі б вырвацца з пятлі. Вы маглі б зрабіць. Лагічнае выраз у зрабі, а можа быць ілжывым. І вы не будзеце прасіць іх зноў. Калі яны даюць вам нумар, дзе адмоўнае яны тыпу нейкае слова ці што-небудзь на самай справе не карысна Вы, вы, магчыма, выкарыстоўваць рабіць, а пятля, каб вярнуцца і зрабіць зноў і зноў, і зноў. Вы, безумоўна, хачу спытаць іх, каб даць вам некалькі разоў, але вы не ведаеце, колькі разоў Пасля гэтага яны могуць быць шкоднікі. І так рабіць, пакуль гэта вялікая выкарыстанне чахол для запыту карыстальніка для ўводу. І для завес выкарыстоўваць Справа, як правіла, калі Вы хочаце, каб паўтарыць цыкл дыскрэтны колькасць разоў, калі вы не маглі б ведаю, колькі разоў момант кампіляцыі праграмы. Так, напрыклад, можа быць, у вас ёсць праграма дзе вы падказаць карыстачу для шэрагу. І яны ўваходзяць 100. І тады ваш цыкл будзе у гэтым выпадку працаваць у 100 разоў. Ці, можа быць, яны ўваходзяць 1000 у праграме а затым запусціць пятлю 1000 разоў. Гэта пэўную колькасць разоў. Яны не абавязкова ведаю, што гэта лік гэта праграма момант складаецца. Гэта не тое, нейкі час цыкл дзе ён можа быць бясконцым. Гэта даволі шэрагу што вы проста не ведаю. Цяпер, хоць я выкладзеныя ўсе гэтыя прэцэдэнты, Вы павінны ведаць, што ў значнай шмат кожны акалічнасць, Вы можаце памяняць усе тры з гэтых завес. Вы можаце выкарыстоўваць цыкл, дзе вы у адваротным выпадку выкарыстоўваць час цыклу. Вы можаце выкарыстоўваць цыкл дзе гэта Вы б выкарыстоўваць рабіць падчас цыкла і гэтак далей. Гэта можа быць крыху больш складана часам, дык увогуле гэта добрая практыка прытрымлівацца тыповага выкарыстання. Выкарыстоўвайце рабіць падчас цыклу, калі вам хацеў што-то калі-то, па меншай меры. Выкарыстоўвайце для цыклу, калі вы хочаце зрабіць што-то пэўную колькасць разоў. У рэшце рэшт, менавіта таму ёсць тры розных выгляду завес. Такім чынам, яны могуць быць выкарыстаны ў правільным кантэксце. Але вы можаце памяняць іх, калі хочаце. Калі вы адчуваеце сябе камфортна з завес у той час як і вы заўсёды хочаце, каб выкарыстоўваць падчас цыклаў. Гэта тое, што Вы можаце зрабіць, хоць ён можа быць трохі сінтаксічна складана, калі для контуру было б нашмат прасцей. Мяне клічуць Дуг Лойд і гэта CS50.