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 Значи, повторно, како што направивме со conditionals, ние ќе ги стави рамо до рамо 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 Само кликнете на контрола и Ц и дека ќе го убие вашата програма за вас. 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 x е еднаква на нула. 44 00:02:01,440 --> 00:02:06,370 А x е помалку од 100, направи неколку работите внатре дека големите загради, 45 00:02:06,370 --> 00:02:10,570 а потоа на крајот на вашиот циклус, да се каже x плус плус, ти си ја зголемува х. 46 00:02:10,570 --> 00:02:13,360 Х на крајот ќе се добие до 100 и вие 47 00:02:13,360 --> 00:02:15,760 запре бидејќи состојбата x е помалку од 100 48 00:02:15,760 --> 00:02:19,416 веќе нема да биде точно, како и штом x е еднаква на 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 во C, повторувајќи нешто 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 А ние продолжуваме да го прават тоа додека i е помал од 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 i изнесува 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 I е помалку од 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 i еднаква на 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 i изнесува 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 Ќе прираст I од 1 до 2 и 2-3. 123 00:05:44,090 --> 00:05:48,290 И така натаму и така натаму и така натаму, се додека на крајот на I вредност станува 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 Што обично се случува да биде нешто како јас плус, плус 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 А навистина чест пример на време looping се користи 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 Ажурирање на позициите разни sprites на табла. 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 а потоа работи на јамка 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 >> Моето име е Даг Лојд и ова е CS50. 206 00:09:21,100 --> 00:09:22,688