1 00:00:07,370 --> 00:00:09,760 [Powered by Google Translate] TOMMY MacWilliam: Давайте поговоримо про loops, одним з найбільш поширених 2 00:00:09,760 --> 00:00:13,380 конструкції програмування ми побачимо всій CS50. 3 00:00:13,380 --> 00:00:15,570 Ми будемо використовувати петлі, коли ми хочемо виконати 4 00:00:15,570 --> 00:00:17,200 Завдання більш ніж один раз. 5 00:00:17,200 --> 00:00:20,700 Наприклад, ми могли б надрукувати "Привіт" в 100 разів або друк 6 00:00:20,700 --> 00:00:22,700 всі букви алфавіту. 7 00:00:22,700 --> 00:00:26,030 В обох цих випадках, ми маємо одну річ, яку ми хочемо зробити 8 00:00:26,030 --> 00:00:28,700 кілька разів, надрукувати що-небудь. 9 00:00:28,700 --> 00:00:31,970 Однак те, що ми друкуємо кожен раз може мінятися. 10 00:00:31,970 --> 00:00:34,530 Таким чином, ми можемо зробити щось трохи відрізняється по кожній 11 00:00:34,530 --> 00:00:37,820 ітерації, або запустити до кінця, циклу. 12 00:00:37,820 --> 00:00:41,280 Ми побачимо три різних типи циклів в C, в той час як 13 00:00:41,280 --> 00:00:44,700 петлі, для петель, і зробити в той час як петлі. 14 00:00:44,700 --> 00:00:47,850 Хоча ці три типи петлі мають різний синтаксис, 15 00:00:47,850 --> 00:00:50,630 ідеї, що стоять за ними те ж саме. 16 00:00:50,630 --> 00:00:53,930 Ми визначимо деякий блок коду у фігурні дужки, 17 00:00:53,930 --> 00:00:57,810 називається тілом циклу, що ми хочемо бути виконаний 18 00:00:57,810 --> 00:00:59,790 деяка кількість разів. 19 00:00:59,790 --> 00:01:03,370 При зміні значень змінних, що використовуються в тілі, ми 20 00:01:03,370 --> 00:01:07,570 може зробити наш цикл зробити щось інше кожен раз, коли він бігти. 21 00:01:07,570 --> 00:01:10,750 При будь-якому циклі ми пишемо, ми також повинні вирішити, коли 22 00:01:10,750 --> 00:01:12,400 цикл буде зупинений. 23 00:01:12,400 --> 00:01:15,650 Якщо ми не зробимо цього, то наш вірний комп'ютер буде продовжувати 24 00:01:15,650 --> 00:01:19,040 для виконання цього циклу, поки ми вбиваємо програму. 25 00:01:19,040 --> 00:01:22,490 У Scratch, ми могли б використовувати повтор п раз 26 00:01:22,490 --> 00:01:24,600 заблокувати для створення циклу. 27 00:01:24,600 --> 00:01:28,200 Всі частини всередині блоку, сказав Повторити 10 28 00:01:28,200 --> 00:01:30,130 буде працювати в 10 разів. 29 00:01:30,130 --> 00:01:34,160 І потім, ми переходимо до частини після цього циклу. 30 00:01:34,160 --> 00:01:38,140 Таким чином, наша зупинка стан було просто, цей блок був 31 00:01:38,140 --> 00:01:39,830 виконати 10 разів. 32 00:01:39,830 --> 00:01:43,900 Так що давайте відтворити це в C. Для того, щоб забезпечити подряпин 33 00:01:43,900 --> 00:01:46,920 що шматки в рамках повторного блоку виконуються 34 00:01:46,920 --> 00:01:51,180 рівно 10 разів, Scratch необхідно стежити за кожним 35 00:01:51,180 --> 00:01:53,750 виконання повторного блоку. 36 00:01:53,750 --> 00:01:56,790 Щоб відстежувати, скільки разів наші тіла циклу була 37 00:01:56,790 --> 00:02:00,360 виконується, давайте створимо змінну я. 38 00:02:00,360 --> 00:02:03,400 Ми почнемо я з нуля, так як наш цикл 39 00:02:03,400 --> 00:02:04,650 не був запущений ще. 40 00:02:10,009 --> 00:02:10,949 Добре 41 00:02:10,949 --> 00:02:15,560 Тепер ми будемо використовувати в той час як ключове слово, щоб почати наш цикл. 42 00:02:20,100 --> 00:02:24,180 Тепер ми повинні з'ясувати, коли наш цикл буде зупинити, але 43 00:02:24,180 --> 00:02:26,730 Залишимо це на даний момент, а потім повернутися до нього. 44 00:02:30,970 --> 00:02:32,150 Добре. 45 00:02:32,150 --> 00:02:35,260 Усередині нашого циклу, давайте просто надрукувати повідомлення з, як 46 00:02:35,260 --> 00:02:38,535 "Привіт". Ми можемо використовувати Е функція для цього. 47 00:02:48,400 --> 00:02:49,230 Добре. 48 00:02:49,230 --> 00:02:54,210 Так що тепер ми будемо записувати, що ітерації циклу тілі 49 00:02:54,210 --> 00:02:55,750 був страчений. 50 00:02:55,750 --> 00:03:00,320 Ми можемо зробити це шляхом додавання 1, або incrementing, наш лічильник 51 00:03:00,320 --> 00:03:01,740 змінних, я. 52 00:03:01,740 --> 00:03:09,180 Щоб зробити це, ми можемо сказати, що я одно я плюс 1 або більше 53 00:03:09,180 --> 00:03:16,520 Просто, я плюс плюс. 54 00:03:16,520 --> 00:03:17,320 Великий. 55 00:03:17,320 --> 00:03:21,810 Отже, тепер ми можемо бачити, що кожен раз наш цикл виконується, наш 56 00:03:21,810 --> 00:03:24,500 змінна лічильника збільшується на один. 57 00:03:24,500 --> 00:03:29,410 Отже, ми знаємо точно, скільки ітерацій ми запускаємо досі. 58 00:03:29,410 --> 00:03:31,630 Після однієї ітерації циклу, наші цінності 59 00:03:31,630 --> 00:03:34,270 про я буду 1. 60 00:03:34,270 --> 00:03:37,460 Після двох ітерацій, я буду 2. 61 00:03:37,460 --> 00:03:42,640 А після 10 ітерацій, я буду 10. 62 00:03:42,640 --> 00:03:46,780 Таким чином, якщо ми хочемо запустити цей цикл рівно 10 разів, потім 63 00:03:46,780 --> 00:03:49,240 це коли ми хочемо зупинити. 64 00:03:49,240 --> 00:03:53,860 Таким чином, ми хочемо запустити цей цикл, поки я менше, ніж 10, і 65 00:03:53,860 --> 00:03:57,630 це точно, що ми будемо писати, а я 66 00:03:57,630 --> 00:04:02,450 менше, ніж 10. 67 00:04:02,450 --> 00:04:06,380 Ця умова виглядає так само, як і умови, які ми використовували в разі 68 00:04:06,380 --> 00:04:07,830 іншим блокам. 69 00:04:07,830 --> 00:04:11,690 Після того як тіло наше цикл був виконаний, наша програма 70 00:04:11,690 --> 00:04:14,690 буде стрибати назад до стану петель. 71 00:04:14,690 --> 00:04:17,290 Якщо умова істинна, то тіло 72 00:04:17,290 --> 00:04:18,990 цикл буде запущений знову. 73 00:04:18,990 --> 00:04:22,190 Якщо умова не вірно, то наш цикл не буде 74 00:04:22,190 --> 00:04:25,700 більше бігти і перейти до наступного рядка коду 75 00:04:25,700 --> 00:04:27,876 Під нашим циклу. 76 00:04:27,876 --> 00:04:28,550 Добре. 77 00:04:28,550 --> 00:04:30,740 Отже, давайте поглянемо на другого типу 78 00:04:30,740 --> 00:04:33,000 петля, петля для. 79 00:04:33,000 --> 00:04:37,310 Далі в той час як ключове слово в дужках, у нас була одна річ, 80 00:04:37,310 --> 00:04:39,840 умова, що необхідно, щоб бути правдою для 81 00:04:39,840 --> 00:04:42,010 Тіло циклу буде виконуватися. 82 00:04:42,010 --> 00:04:45,440 Це означає, що ми повинні були створити нашу змінну лічильника за межі 83 00:04:45,440 --> 00:04:48,760 циклу і пам'ятати, щоб збільшити її в деякій точці 84 00:04:48,760 --> 00:04:51,050 Всередині циклу. 85 00:04:51,050 --> 00:04:54,320 Тема для нашого циклу, з іншого боку, має три 86 00:04:54,320 --> 00:04:58,510 частин, кожна з яких буде розділяються крапкою з комою. 87 00:04:58,510 --> 00:05:01,950 У нашій першій третині, ми можемо оголосити будь зустрічне або допоміжні 88 00:05:01,950 --> 00:05:05,000 змінних, які ми хотіли б використовувати в нашому циклі. 89 00:05:05,000 --> 00:05:07,350 На практиці це може бути дуже корисним. 90 00:05:07,350 --> 00:05:10,590 Ми дійсно не потрібна ця змінна, я, в той час як після нашої 91 00:05:10,590 --> 00:05:13,650 цикл закінчився, так що ми дійсно не повинні оголосити його 92 00:05:13,650 --> 00:05:15,810 поза циклом. 93 00:05:15,810 --> 00:05:19,080 Друга третина буде умова, яка повинна виконуватися 94 00:05:19,080 --> 00:05:21,850 для тіла, щоб бути виконана знову, як 95 00:05:21,850 --> 00:05:23,330 У наш час циклу. 96 00:05:23,330 --> 00:05:26,350 У нашій останній третині, ми можемо запустити заяву, яку буде 97 00:05:26,350 --> 00:05:30,270 виконується після кожної ітерації циклу, тому в нас немає 98 00:05:30,270 --> 00:05:32,710 вбудовувати його в тіло циклу. 99 00:05:32,710 --> 00:05:38,390 Так що давайте писати цикл, який відраховує від 5 до 1. 100 00:05:38,390 --> 00:05:41,790 Ми почнемо з для ключового слова. 101 00:05:41,790 --> 00:05:44,680 Ми можемо створити змінну лічильника перший, який ми 102 00:05:44,680 --> 00:05:47,840 встановлений в 5, так як на цей раз ми розраховуємо вниз, 103 00:05:47,840 --> 00:05:50,110 слід крапка з комою. 104 00:05:50,110 --> 00:05:53,660 Наступне наше умова, яку ми будемо повертатися. 105 00:05:53,660 --> 00:05:57,540 По-третє, ми хотіли б зменшувати нашу змінну лічильника після 106 00:05:57,540 --> 00:05:59,620 кожній ітерації циклу. 107 00:05:59,620 --> 00:06:04,740 Таким чином, замість того, щоб говорити я плюс плюс, ми сказати, що я мінус мінус. 108 00:06:04,740 --> 00:06:05,300 Добре. 109 00:06:05,300 --> 00:06:09,490 Тому ми хочемо, тіло циклу для запуску в той час як я все ще 110 00:06:09,490 --> 00:06:11,960 більше 0. 111 00:06:11,960 --> 00:06:16,160 У тілі циклу, давайте роздрукувати значення я. 112 00:06:16,160 --> 00:06:20,480 Для цього ми будемо використовувати Е функція, за допомогою% D 113 00:06:20,480 --> 00:06:21,650 заповнювача. 114 00:06:21,650 --> 00:06:24,820 Пам'ятайте, що заповнювач буде замінений 115 00:06:24,820 --> 00:06:27,040 Значення я. 116 00:06:27,040 --> 00:06:32,060 Нарешті, давайте додамо заяву після нашого циклу. 117 00:06:32,060 --> 00:06:35,850 Коли ми запускаємо цей цикл, я буду починати на 5, 118 00:06:35,850 --> 00:06:38,070 так що 5 буде надрукований. 119 00:06:38,070 --> 00:06:42,000 Як тільки я добирається до 0, продовження стані, я це 120 00:06:42,000 --> 00:06:44,450 більше 0, більше не будуть виконані. 121 00:06:44,450 --> 00:06:47,330 Таким чином, наш цикл буде зупинити виконання, і ми побачимо, 122 00:06:47,330 --> 00:06:49,850 заяву після циклу. 123 00:06:49,850 --> 00:06:51,340 Так давайте запустимо цей код. 124 00:06:51,340 --> 00:06:52,700 По-перше, ми будемо компілювати 125 00:06:52,700 --> 00:06:56,460 countdown.c зробити зі зворотним відліком. 126 00:06:56,460 --> 00:06:59,320 Тепер ми можемо запустити цей код с. / Відлік. 127 00:07:02,340 --> 00:07:06,040 У той час як обидві петлі і петлі, наше продовження 128 00:07:06,040 --> 00:07:09,010 умова буде перевірятися, перш ніж тіло 129 00:07:09,010 --> 00:07:10,960 з циклу. 130 00:07:10,960 --> 00:07:13,840 Це означає, що, якщо наші умови спочатку не 131 00:07:13,840 --> 00:07:18,100 правда, то тіло нашого циклу ніколи не буде виконуватися. 132 00:07:18,100 --> 00:07:22,060 Так що іноді корисно перевіряти стан після 133 00:07:22,060 --> 00:07:25,150 Тіло циклу, а не перед ним. 134 00:07:25,150 --> 00:07:28,270 Так що давайте написати цикл, щоб запитувати у користувача число 135 00:07:28,270 --> 00:07:30,990 до позитивного числа в комплект поставки. 136 00:07:30,990 --> 00:07:34,740 Якщо користувач вводить негативне число, ми хочемо, щоб запитати їх 137 00:07:34,740 --> 00:07:36,260 на інший номер. 138 00:07:36,260 --> 00:07:38,940 Так що нам потрібно це запрошення, щоб бути всередині 139 00:07:38,940 --> 00:07:41,050 тіло з петлею. 140 00:07:41,050 --> 00:07:44,730 Однак, коли цикл запускається в перший раз, користувач 141 00:07:44,730 --> 00:07:46,750 не дав нам номер ще немає. 142 00:07:46,750 --> 00:07:49,640 Так що це не має сенсу, щоб перевірити, якщо він позитивний. 143 00:07:49,640 --> 00:07:54,020 Замість цього, ми хочемо, щоб перевірити номер після тіла 144 00:07:54,020 --> 00:07:55,720 цикл виконується. 145 00:07:55,720 --> 00:08:00,310 Ми можемо зробити це з робити під час циклу. 146 00:08:00,310 --> 00:08:03,560 По-перше, ми створимо змінну п, який буде містити 147 00:08:03,560 --> 00:08:05,230 користувачів вхід. 148 00:08:05,230 --> 00:08:09,960 Тепер ми будемо використовувати на ключові слова, а потім фігурні дужки, що 149 00:08:09,960 --> 00:08:12,930 буде почати тілі нашого циклу. 150 00:08:12,930 --> 00:08:16,230 У тілі, ми можемо запропонувати користувачеві ряд з 151 00:08:16,230 --> 00:08:18,480 GetInt функції. 152 00:08:18,480 --> 00:08:23,230 Тепер ми хочемо тіло цього циклу виконати знову, якщо 153 00:08:23,230 --> 00:08:28,370 користувач вводить негативне число, тому ми будемо говорити в той час як п 154 00:08:28,370 --> 00:08:30,420 менше 0. 155 00:08:30,420 --> 00:08:33,140 Зверніть увагу на крапку з комою тут після того, як при заяві. 156 00:08:38,909 --> 00:08:40,679 Так давайте запустимо цей код. 157 00:08:40,679 --> 00:08:44,780 По-перше, ми будемо збирати з цим зробити позитивним. 158 00:08:44,780 --> 00:08:49,340 Тепер ми можемо запустити програму командою. / Позитивний. 159 00:08:49,340 --> 00:08:52,660 Якщо ми дамо цю програму негативного числа, як і негативні 160 00:08:52,660 --> 00:08:56,560 4, то буде запропоновано знову поруч з 161 00:08:56,560 --> 00:09:00,490 стан нашої робити під час циклу було правдою. 162 00:09:00,490 --> 00:09:04,690 Як тільки ми даємо позитивне число, як і 8, то 163 00:09:04,690 --> 00:09:08,560 стан нашої робити під час циклу більше не буде правдою. 164 00:09:08,560 --> 00:09:12,080 Таким чином, цикл не буде виконаний ще раз. 165 00:09:12,080 --> 00:09:15,290 І ось саме для трьох типів петель ми будемо використовувати в C. 166 00:09:15,290 --> 00:09:18,840 Мене звати Томмі, і це CS50.