1 00:00:00,000 --> 00:00:05,410 2 00:00:05,410 --> 00:00:07,640 >> Даг Ллоид: У реду, хајде да причамо о петљи. 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 Вероватно ћете имали прилике да користе свака како напредујете кроз ЦС50. 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 то уклапа унутар Ц од заувек блок, 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 Да ли је то труе-- изгледа мало силли-- истина је увек истина, тако да је увек ћу покренути. 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 Само хит контролу и Ц и да ће убити ваш програм за вас. 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 >> Дакле, у Ц, ако Боолеан екпрессион унутар вхиле петље 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 Дакле, ви кажете на почетку Ова петља кажу инт једнака нули. 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 У овом случају, ми смо рекавши инт и износи 0. 91 00:04:15,180 --> 00:04:18,709 О проглашењу нову променљиву Звао сам, да варијабле је врста цео 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 инт и једнако 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 Тако ћемо почети од стране рекавши инт и износи 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 Ne. 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 Која се обично ће бити нешто као и плус плус 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 Или можда они улазе 1.000 у вашем програму 183 00:08:22,480 --> 00:08:24,570 а затим покрените петља 1.000 пута. 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 >> Моје име је Даг Лојд и то је ЦС50. 206 00:09:21,100 --> 00:09:22,688