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