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