1 00:00:07,370 --> 00:00:09,760 [Powered by Google Translate] TOMMY MacWilliam: Pojďme se bavit o smyčkách, jeden z společný 2 00:00:09,760 --> 00:00:13,380 programování konstruuje uvidíme celé CS50. 3 00:00:13,380 --> 00:00:15,570 Budeme používat smyčky, když chceme provést 4 00:00:15,570 --> 00:00:17,200 úkol více než jednou. 5 00:00:17,200 --> 00:00:20,700 Například bychom mohli chtít tisknout "Hi" 100 krát nebo tisk 6 00:00:20,700 --> 00:00:22,700 z všech písmen abecedy. 7 00:00:22,700 --> 00:00:26,030 V obou těchto případech, máme jednu věc, kterou chcete udělat 8 00:00:26,030 --> 00:00:28,700 vícekrát, vytisknout něco. 9 00:00:28,700 --> 00:00:31,970 Avšak to, co jsme vytisknout pokaždé se může lišit. 10 00:00:31,970 --> 00:00:34,530 Takže, co můžeme udělat něco trochu jiného na sebe 11 00:00:34,530 --> 00:00:37,820 iterace, nebo spustit přes ze smyčky. 12 00:00:37,820 --> 00:00:41,280 Uvidíme tři různé typy smyček v C, zatímco 13 00:00:41,280 --> 00:00:44,700 smyčky, pro smyčky, a dělat while. 14 00:00:44,700 --> 00:00:47,850 Ačkoli tyto tři typy smyček mají jinou syntaxi, 15 00:00:47,850 --> 00:00:50,630 nápady za nimi jsou stejné. 16 00:00:50,630 --> 00:00:53,930 Budeme definovat některé blok kódu uvnitř složených závorek, 17 00:00:53,930 --> 00:00:57,810 volal tělo smyčky, že chceme být provedeny 18 00:00:57,810 --> 00:00:59,790 nějaké číslo, kolikrát chcete. 19 00:00:59,790 --> 00:01:03,370 Změnou hodnot proměnných používaných v těle, jsme 20 00:01:03,370 --> 00:01:07,570 může naše loop dělat něco jiného pokaždé to spustit. 21 00:01:07,570 --> 00:01:10,750 S trochou smyčky píšeme, budeme také muset rozhodnout, kdy 22 00:01:10,750 --> 00:01:12,400 smyčka se přestanou zobrazovat. 23 00:01:12,400 --> 00:01:15,650 Pokud to neuděláme, pak náš věrný počítač bude pokračovat 24 00:01:15,650 --> 00:01:19,040 běžet tu smyčku, dokud jsme zabít program. 25 00:01:19,040 --> 00:01:22,490 V Scratch, mohli bychom použít opakování n krát 26 00:01:22,490 --> 00:01:24,600 zablokovat vytvořit smyčku. 27 00:01:24,600 --> 00:01:28,200 Všechny kousky uvnitř bloku, který uvedl opakování 10 28 00:01:28,200 --> 00:01:30,130 by být spuštěn 10 krát. 29 00:01:30,130 --> 00:01:34,160 A pak bychom přejít na kousky po tomto vedení. 30 00:01:34,160 --> 00:01:38,140 Takže naše zastávka stav byl prostě, tento blok byl 31 00:01:38,140 --> 00:01:39,830 spustit 10 krát. 32 00:01:39,830 --> 00:01:43,900 Takže pojďme znovu to v C. Aby Scratch zajištění 33 00:01:43,900 --> 00:01:46,920 že kusy v rámci opakování bloku jsou prováděny 34 00:01:46,920 --> 00:01:51,180 přesně 10 krát, Scratch je třeba sledovat každý 35 00:01:51,180 --> 00:01:53,750 provedení opakovaného bloku. 36 00:01:53,750 --> 00:01:56,790 Chcete-li mít přehled o tom, kolikrát naše tělo cyklu byla 37 00:01:56,790 --> 00:02:00,360 popraven, pojďme vytvořit proměnnou s názvem i. 38 00:02:00,360 --> 00:02:03,400 Začneme i off na nule, protože naše vedení 39 00:02:03,400 --> 00:02:04,650 nebyl spuštěn ještě. 40 00:02:10,009 --> 00:02:10,949 OK 41 00:02:10,949 --> 00:02:15,560 Nyní budeme používat, zatímco klíčové slovo začít náš smyčku. 42 00:02:20,100 --> 00:02:24,180 Teď budeme muset přijít na to, když se naše smyčka se zastaví, ale 43 00:02:24,180 --> 00:02:26,730 nechme to pro teď a pak se vrátit k němu. 44 00:02:30,970 --> 00:02:32,150 Dobrá. 45 00:02:32,150 --> 00:02:35,260 Uvnitř naší smyčky, pojďme jen vytisknout zprávu, podobně jako 46 00:02:35,260 --> 00:02:38,535 "Hi". Můžeme použít printf funkce pro toto. 47 00:02:48,400 --> 00:02:49,230 Dobrá. 48 00:02:49,230 --> 00:02:54,210 Takže teď budeme zjišťovat, že iterace smyčky těla má 49 00:02:54,210 --> 00:02:55,750 byl proveden. 50 00:02:55,750 --> 00:03:00,320 Můžeme to udělat, že přidáním 1, nebo zvyšování, naše counter 51 00:03:00,320 --> 00:03:01,740 variabilní, i. 52 00:03:01,740 --> 00:03:09,180 Chcete-li to, že můžeme říct, že jsem se rovná i plus 1, nebo více 53 00:03:09,180 --> 00:03:16,520 jednoduše, i plus plus. 54 00:03:16,520 --> 00:03:17,320 Skvělé. 55 00:03:17,320 --> 00:03:21,810 Takže teď můžeme vidět, že pokaždé, když naše smyčka běží, naše 56 00:03:21,810 --> 00:03:24,500 čítač proměnnou zvedne o jednu. 57 00:03:24,500 --> 00:03:29,410 Takže přesně víme, kolik iterací jsme běžet tak daleko. 58 00:03:29,410 --> 00:03:31,630 Po jedné iterace smyčky, naše hodnoty 59 00:03:31,630 --> 00:03:34,270 i-bude 1. 60 00:03:34,270 --> 00:03:37,460 Po dvou iteracích, budu 2. 61 00:03:37,460 --> 00:03:42,640 A po 10 iteracích, budu 10. 62 00:03:42,640 --> 00:03:46,780 Takže, pokud chceme spustit tuto smyčku přesně 10 krát, pak 63 00:03:46,780 --> 00:03:49,240 to je, když chceme zastavit. 64 00:03:49,240 --> 00:03:53,860 Takže chceme spustit tuto smyčku, zatímco i je menší než 10, a 65 00:03:53,860 --> 00:03:57,630 to je přesně to, co budeme psát, když jsem 66 00:03:57,630 --> 00:04:02,450 je menší než 10. 67 00:04:02,450 --> 00:04:06,380 Tato podmínka vypadá stejně jako podmínek jsme použili v případě, 68 00:04:06,380 --> 00:04:07,830 else bloky. 69 00:04:07,830 --> 00:04:11,690 Po tělo našeho smyčky byl proveden, náš program 70 00:04:11,690 --> 00:04:14,690 se skočit zpět do stavu smyčky. 71 00:04:14,690 --> 00:04:17,290 Je-li podmínka pravdivá, pak tělo 72 00:04:17,290 --> 00:04:18,990 Smyčka bude znovu spuštěn. 73 00:04:18,990 --> 00:04:22,190 Je-li podmínka již neplatí, pak se naše smyčka nebude 74 00:04:22,190 --> 00:04:25,700 utíkat a přesunout na další řádek kódu 75 00:04:25,700 --> 00:04:27,876 pod naší smyčky. 76 00:04:27,876 --> 00:04:28,550 Dobrá. 77 00:04:28,550 --> 00:04:30,740 Takže pojďme se podívat na druhý typ 78 00:04:30,740 --> 00:04:33,000 smyčka, pro smyčce. 79 00:04:33,000 --> 00:04:37,310 Vedle zatímco klíčové slovo, v závorce, jsme měli jednu věc, 80 00:04:37,310 --> 00:04:39,840 podmínka, že musel být pravdivý pro 81 00:04:39,840 --> 00:04:42,010 Tělo cyklu se má spustit. 82 00:04:42,010 --> 00:04:45,440 To znamená, že museli vytvořit naši čítače proměnnou mimo 83 00:04:45,440 --> 00:04:48,760 ze smyčky a nezapomeňte zvýšit ji na nějakém místě 84 00:04:48,760 --> 00:04:51,050 uvnitř smyčky. 85 00:04:51,050 --> 00:04:54,320 Záhlaví pro naše pro smyčku, na druhé straně, má tři 86 00:04:54,320 --> 00:04:58,510 díly, z nichž každý se oddělují středníkem. 87 00:04:58,510 --> 00:05:01,950 V naší první třetině, můžeme prohlásit jakýkoliv pult nebo pomocníka 88 00:05:01,950 --> 00:05:05,000 proměnné bychom chtěli využít v našem smyčce. 89 00:05:05,000 --> 00:05:07,350 V praxi to může být opravdu užitečné. 90 00:05:07,350 --> 00:05:10,590 Opravdu nepotřebujeme tuto proměnnou, i, po našem chvíli 91 00:05:10,590 --> 00:05:13,650 smyčka běží, tak to jsme opravdu neměli prohlásit ho 92 00:05:13,650 --> 00:05:15,810 mimo smyčky. 93 00:05:15,810 --> 00:05:19,080 Druhé třetině bude podmínka, že musí být pravda 94 00:05:19,080 --> 00:05:21,850 pro subjekt, který bude proveden znovu, stejně jako 95 00:05:21,850 --> 00:05:23,330 v našem smyčce while. 96 00:05:23,330 --> 00:05:26,350 V našem poslední třetině, můžeme spustit prohlášení, že bude 97 00:05:26,350 --> 00:05:30,270 spuštěn po každé iteraci smyčky, takže nemáme 98 00:05:30,270 --> 00:05:32,710 ji postavit do smyčky těla. 99 00:05:32,710 --> 00:05:38,390 Takže pojďme napsat pro smyčce, která počítá se 5-1. 100 00:05:38,390 --> 00:05:41,790 Začneme s pro klíčové slovo. 101 00:05:41,790 --> 00:05:44,680 Můžeme vytvořit čítače proměnnou první, které budeme 102 00:05:44,680 --> 00:05:47,840 nastaven na 5 tentokrát protože jsme odpočítávání, 103 00:05:47,840 --> 00:05:50,110 následovaný středníkem. 104 00:05:50,110 --> 00:05:53,660 Dále je naše podmínka, která se vrátíme do. 105 00:05:53,660 --> 00:05:57,540 Zatřetí, rádi bychom decrement náš pult proměnnou po 106 00:05:57,540 --> 00:05:59,620 každé opakování smyčky. 107 00:05:59,620 --> 00:06:04,740 Takže spíše než říct, že jsem plus plus, budeme říkat i minus minus. 108 00:06:04,740 --> 00:06:05,300 Dobrá. 109 00:06:05,300 --> 00:06:09,490 Takže chceme tělo cyklu se spouští, když i je stále 110 00:06:09,490 --> 00:06:11,960 větší než 0. 111 00:06:11,960 --> 00:06:16,160 V těle smyčky, pojďme vytisknout hodnotu i. 112 00:06:16,160 --> 00:06:20,480 Chcete-li tak učinit, budeme používat funkci printf, pomocí% d 113 00:06:20,480 --> 00:06:21,650 zástupný symbol. 114 00:06:21,650 --> 00:06:24,820 Pamatuj, že symbol nahrazen 115 00:06:24,820 --> 00:06:27,040 hodnota i. 116 00:06:27,040 --> 00:06:32,060 Nakonec dodejme, prohlášení po našich pro smyčce. 117 00:06:32,060 --> 00:06:35,850 Když jsme se spustit tuto smyčku, bude i začít na 5, 118 00:06:35,850 --> 00:06:38,070 takže 5 budou vytištěny. 119 00:06:38,070 --> 00:06:42,000 Jakmile jsem se dostane do 0, pokračování podmínka, i je 120 00:06:42,000 --> 00:06:44,450 větší než 0, bude již držet. 121 00:06:44,450 --> 00:06:47,330 Takže naše smyčka se zastaví provádění, a uvidíme 122 00:06:47,330 --> 00:06:49,850 prohlášení po smyčce. 123 00:06:49,850 --> 00:06:51,340 Takže pojďme spuštěním tohoto kódu. 124 00:06:51,340 --> 00:06:52,700 Za prvé, budeme sestavovat 125 00:06:52,700 --> 00:06:56,460 countdown.c s make odpočítávání. 126 00:06:56,460 --> 00:06:59,320 Nyní můžeme spustit tento kód s. / Odpočítávání. 127 00:07:02,340 --> 00:07:06,040 V obou while a smyčky, naše pokračování 128 00:07:06,040 --> 00:07:09,010 stav bude kontrolován před tělem 129 00:07:09,010 --> 00:07:10,960 z smyčky je spuštěn. 130 00:07:10,960 --> 00:07:13,840 To znamená, že v případě náš stav není zpočátku 131 00:07:13,840 --> 00:07:18,100 pravda, pak tělo našeho vedení bude pracovat v žádném případě. 132 00:07:18,100 --> 00:07:22,060 Takže je to někdy užitečné zkontrolovat stav po 133 00:07:22,060 --> 00:07:25,150 tělo smyčky, spíše než před ním. 134 00:07:25,150 --> 00:07:28,270 Takže pojďme napsat smyčku vyzvat uživatele k zadání čísla 135 00:07:28,270 --> 00:07:30,990 dokud kladné číslo je součástí dodávky. 136 00:07:30,990 --> 00:07:34,740 Pokud uživatelské vstupy záporné číslo, budeme chtít požádat je 137 00:07:34,740 --> 00:07:36,260 pro jiné číslo. 138 00:07:36,260 --> 00:07:38,940 Takže budeme chtít tuto výzvu, aby se uvnitř 139 00:07:38,940 --> 00:07:41,050 Tělo mimo smyčku. 140 00:07:41,050 --> 00:07:44,730 Nicméně, je-li smyčka běžet poprvé, uživatel 141 00:07:44,730 --> 00:07:46,750 nám nedal číslo ještě. 142 00:07:46,750 --> 00:07:49,640 Takže to nemá smysl a zkontrolujte, jestli je to pozitivní. 143 00:07:49,640 --> 00:07:54,020 Místo toho chceme zkontrolovat číslo po těle 144 00:07:54,020 --> 00:07:55,720 smyčky je spuštěn. 145 00:07:55,720 --> 00:08:00,310 Můžeme to udělat s DO smyčce while. 146 00:08:00,310 --> 00:08:03,560 Nejprve si vytvoříme proměnnou, n, které budou držet 147 00:08:03,560 --> 00:08:05,230 uživatelského vstupu. 148 00:08:05,230 --> 00:08:09,960 Nyní budeme používat DO klíčové slovo, následuje složených závorek, které 149 00:08:09,960 --> 00:08:12,930 odstartuje tělo našeho smyčky. 150 00:08:12,930 --> 00:08:16,230 V těle, můžeme vyzvat uživatele k zadání čísla s 151 00:08:16,230 --> 00:08:18,480 GetInt funkci. 152 00:08:18,480 --> 00:08:23,230 Nyní, budeme chtít tělo této smyčky spustit znovu, pokud 153 00:08:23,230 --> 00:08:28,370 uživatel zadali záporné číslo, takže budeme říkat, když n 154 00:08:28,370 --> 00:08:30,420 je menší než 0. 155 00:08:30,420 --> 00:08:33,140 Všimněte si, že středník zde po while. 156 00:08:38,909 --> 00:08:40,679 Takže pojďme spuštěním tohoto kódu. 157 00:08:40,679 --> 00:08:44,780 Za prvé, budeme kompilovat to s make pozitivní. 158 00:08:44,780 --> 00:08:49,340 Nyní můžeme spustit program s. / Pozitivní. 159 00:08:49,340 --> 00:08:52,660 Dáme-li tento program záporné číslo, jako negativní 160 00:08:52,660 --> 00:08:56,560 4, pak budeme vyzváni znovu pro číslo od 161 00:08:56,560 --> 00:09:00,490 Stav našeho dělat, když smyčka byla pravda. 162 00:09:00,490 --> 00:09:04,690 Jakmile dáváme kladné číslo, jako 8, pak 163 00:09:04,690 --> 00:09:08,560 Stav našeho dělat, když smyčka již nebude pravda. 164 00:09:08,560 --> 00:09:12,080 Takže smyčka nebudou provedeny znovu. 165 00:09:12,080 --> 00:09:15,290 A to je pro tři typy smyček budeme používat v C. 166 00:09:15,290 --> 00:09:18,840 Mé jméno je Tommy, a to je CS50.