1 00:00:00,000 --> 00:00:05,410 2 00:00:05,410 --> 00:00:07,640 >> Doug LLOYD: Gerai, taip pakalbėkime apie kilpas. 3 00:00:07,640 --> 00:00:10,015 Taigi kilpos tipo kietas nes jie leidžia savo programą 4 00:00:10,015 --> 00:00:12,050 vykdyti kodo eilutes daugiau ir daugiau ir daugiau. 5 00:00:12,050 --> 00:00:15,600 Pakartotinai, nereikia kopijuoti ir įklijuokite ar kitaip juos pakartoti. 6 00:00:15,600 --> 00:00:17,630 Yra trys pagrindiniai rūšių kilpų pamatysite. 7 00:00:17,630 --> 00:00:21,010 Jūs tikriausiai turite progą pasinaudoti kiekvienas, kaip jūs pažangą per CS50. 8 00:00:21,010 --> 00:00:22,940 Kai kurie iš šių linijų yra gana pažįstamas nuo nulio, 9 00:00:22,940 --> 00:00:25,814 Taigi dar kartą, kaip mes padarėme su sąlyginių, mes įdėti juos vieną šalia kito 10 00:00:25,814 --> 00:00:28,930 jei yra analogija mes galime padaryti. 11 00:00:28,930 --> 00:00:33,600 >> Pirma amžinai nuo nulio, kuris lygina su while (true). 12 00:00:33,600 --> 00:00:35,390 Tai yra tai, ką mes vadiname begalinis ciklas. 13 00:00:35,390 --> 00:00:38,560 Kodinių linijos tarp garbanotieji petnešos, panašiai kaip įspūdį 14 00:00:38,560 --> 00:00:41,190 kad viduje C tinka iš amžinai blokuoti, 15 00:00:41,190 --> 00:00:45,290 atliks ne kartą iš viršaus į apačią, vėl ir vėl ir vėl, 16 00:00:45,290 --> 00:00:46,085 amžinai. 17 00:00:46,085 --> 00:00:48,710 Galų gale, jei jūs prisimenate DUK diskusija Būlio išraiškos, 18 00:00:48,710 --> 00:00:51,060 tiesa visada yra tiesa. 19 00:00:51,060 --> 00:00:53,250 Taigi, jei mes darome kažkas taip ilgai, kaip tiesa 20 00:00:53,250 --> 00:00:58,227 yra true-- Atrodo šiek tiek silly-- tiesa yra visada teisinga, todėl visada galėsite paleisti. 21 00:00:58,227 --> 00:01:00,060 Tai bus paleisti amžinai ir amžių amžius, kol mes 22 00:01:00,060 --> 00:01:02,900 rasti būdą išeiti iš jos su pertrauka teiginys, kuris vėl, 23 00:01:02,900 --> 00:01:06,350 mes matėme šiek tiek, o prieš mums buvo kalbama apie jungikliu. 24 00:01:06,350 --> 00:01:08,725 >> Arba kitaip tiesiog žudo mūsų programa, kuri, beje, 25 00:01:08,725 --> 00:01:11,110 jei jūs kada nors rasti sau situacija su begalinis ciklas 26 00:01:11,110 --> 00:01:13,484 ir jūs nežinote, kaip sustabdyti jūsų programa paleisti. 27 00:01:13,484 --> 00:01:16,527 Tiesiog paspauskite kontrolę ir C kad bus nužudyti savo programą Jums. 28 00:01:16,527 --> 00:01:18,360 Tačiau tai, vėlgi, yra vadinamas begalinis ciklas. 29 00:01:18,360 --> 00:01:19,818 Tai yra kilpa, kad bus paleisti visam laikui. 30 00:01:19,818 --> 00:01:22,570 31 00:01:22,570 --> 00:01:25,610 Dabar, o kilpos nėra visada begalinis, nes taip 32 00:01:25,610 --> 00:01:27,880 mes galime pakeisti Būlio išraiška kažką 33 00:01:27,880 --> 00:01:29,867 šiek tiek daugiau naudingos ne tik tiesa. 34 00:01:29,867 --> 00:01:30,950 Taigi čia dar vienas pavyzdys. 35 00:01:30,950 --> 00:01:34,600 Nors ir kai Būlio išraiška ir tada garbanotas petnešos. 36 00:01:34,600 --> 00:01:38,310 Tai gana daug analogiškas pakartoti, kol nuo nulio. 37 00:01:38,310 --> 00:01:40,700 Nors per sekundę, aš paaiškinti skirtumą. 38 00:01:40,700 --> 00:01:44,310 >> Taigi C, jei Būlio išraiškos viduje, o kilpa 39 00:01:44,310 --> 00:01:47,980 įvertina, kad tiesa, linijas kodas tarp klamrami 40 00:01:47,980 --> 00:01:51,900 atliks ne kartą daugiau ir daugiau ir vėl, kol Būlio išraiškos 41 00:01:51,900 --> 00:01:55,174 įvertina false. 42 00:01:55,174 --> 00:01:57,340 Taigi, pavyzdžiui, jums gali turėti tam tikrą kovos rūšiuoti. 43 00:01:57,340 --> 00:02:01,440 Taigi sakau jums ne iš pradžių Šis ciklas sako int x lygus nuliui. 44 00:02:01,440 --> 00:02:06,370 Nors x yra mažesnis nei 100, tai pora viskas viduje, kad garbanotas petnešos, 45 00:02:06,370 --> 00:02:10,570 tada jūsų kilpa pabaigoje, jūs sakote x plius plius, jūs incrementing x. 46 00:02:10,570 --> 00:02:13,360 Galų gale x gausite 100 ir jūs 47 00:02:13,360 --> 00:02:15,760 sustoti, nes su sąlyga, x yra mažiau nei 100 48 00:02:15,760 --> 00:02:19,416 nebebus tiesa, kaip greičiau kaip x yra lygus 100. 49 00:02:19,416 --> 00:02:21,820 100 yra ne mažesnis kaip 100. 50 00:02:21,820 --> 00:02:25,870 >> Dabar šiek tiek klaidinančiai, elgesys iš įbrėžimams blokas yra atstatomas. 51 00:02:25,870 --> 00:02:29,110 Taigi būkite atsargūs, jei tikrai tai yra Jūsų pirmasis įsiveržimas į naudojant kilpas. 52 00:02:29,110 --> 00:02:33,630 Iš esmės, pakartokite iki bloko Scratch 53 00:02:33,630 --> 00:02:35,970 bus pakartoti kažką daugiau ir daugiau ir daugiau, 54 00:02:35,970 --> 00:02:40,460 iki išraiškos, Būlio išraiška šešiakampis yra tiesa. 55 00:02:40,460 --> 00:02:43,860 Taigi ji bus nuolat daro tai kol jis yra tiesa. 56 00:02:43,860 --> 00:02:48,881 Tuo tarpu while cikle bus toliau daryti, kol ji yra klaidinga. 57 00:02:48,881 --> 00:02:51,630 Taigi jie gana panašūs, tačiau ten, kad mažai skirtumo tik 58 00:02:51,630 --> 00:02:55,140 būti atsargūs, ypač kaip jūs darote Jūsų pirmasis įsiveržimas iš pereinate 59 00:02:55,140 --> 00:02:58,149 subraižyti į C. 60 00:02:58,149 --> 00:03:00,190 Kitas rūšies kilpos yra tikrai gana panašūs. 61 00:03:00,190 --> 00:03:02,860 Tai vadinama, o kilpa daryti. 62 00:03:02,860 --> 00:03:07,060 Šis ciklas atliks visas linijas kodo tarp garbanotas petnešos vieną kartą, 63 00:03:07,060 --> 00:03:09,530 ir tada ji bus patikrinti Būlio išraiška. 64 00:03:09,530 --> 00:03:11,700 Jei Būlio išraiškos įvertina tiesa, 65 00:03:11,700 --> 00:03:14,340 jis bus grįžti ir pakartoti kad procesas daugiau ir daugiau 66 00:03:14,340 --> 00:03:17,690 ir daugiau, kol Būlio išraiška įvertina false. 67 00:03:17,690 --> 00:03:23,370 Taigi, tai kilpa, skirtingai nei while cikle, yra garantuoja, kad paleisti bent vieną kartą. 68 00:03:23,370 --> 00:03:26,080 Tai gali būti gana naudinga. 69 00:03:26,080 --> 00:03:28,011 >> Galiausiai, mes turime už kilpa. 70 00:03:28,011 --> 00:03:30,010 Dėl kilpos rūšies sintaksiškai nepatraukli 71 00:03:30,010 --> 00:03:32,330 ir ten daug vyksta čia, todėl būti su manimi 72 00:03:32,330 --> 00:03:34,640 kaip mes stengiamės ir pertrauka šių vienetų atskirai. 73 00:03:34,640 --> 00:03:36,810 Apskritai, naudojimo atveju iš už kilpa yra jums 74 00:03:36,810 --> 00:03:40,136 noriu pakartoti kažką tikrą skaičių kartų. 75 00:03:40,136 --> 00:03:42,010 Šiame pavyzdyje čia Turiu pakartoti blokas 76 00:03:42,010 --> 00:03:44,010 nuo nulio, o tai analogiškas už kilpos 77 00:03:44,010 --> 00:03:47,340 C, kartojant kažką 10 kartų. 78 00:03:47,340 --> 00:03:49,250 Ir už kilpa Kairėje pusėje, kuris 79 00:03:49,250 --> 00:03:51,410 yra keturių kilpa, kad būtų daryti tą patį. 80 00:03:51,410 --> 00:03:52,570 Tai būtų 10 kartų. 81 00:03:52,570 --> 00:03:56,720 Skaičiuojant nuo nulio, mes prieaugio kiekvieną kilpą perdavimo. 82 00:03:56,720 --> 00:03:59,220 Ir mes nuolat daryti tol, kol i yra mažesnis nei 10. 83 00:03:59,220 --> 00:04:00,134 >> Taigi, kas atsitiks? 84 00:04:00,134 --> 00:04:01,550 Yra visa partija kodas ten. 85 00:04:01,550 --> 00:04:03,424 Leiskite ją padalyti į kas vyksta žingsnis 86 00:04:03,424 --> 00:04:05,684 po žingsnio, kaip mes kasti per for ciklas. 87 00:04:05,684 --> 00:04:08,350 Pirmas dalykas, kad nutiko skaitiklis kintamasis yra centras. 88 00:04:08,350 --> 00:04:11,970 Viskas su ta pirmoji kairėje kabliataškis viduje skliausteliuose 89 00:04:11,970 --> 00:04:12,970 yra įvykdytas. 90 00:04:12,970 --> 00:04:15,180 Šiuo atveju, mes sakydamas int i lygus 0. 91 00:04:15,180 --> 00:04:18,709 Skelbiu naują kintamąjį vadinamą "I, kad kintamųjų yra tipo sveikas 92 00:04:18,709 --> 00:04:22,570 ir mes sakydamas vertę viduje kad kintamasis bus nulis. 93 00:04:22,570 --> 00:04:25,480 >> Antras dalykas, mes darome, yra mes tada iš karto įvertinti 94 00:04:25,480 --> 00:04:26,750 Būlio išraiška. 95 00:04:26,750 --> 00:04:30,100 Bulio logikos išraiška yra į viduryje dviejų kabliataškiais. 96 00:04:30,100 --> 00:04:31,360 I yra mažesnis nei 10. 97 00:04:31,360 --> 00:04:32,410 Tai tiesa čia, tiesa? 98 00:04:32,410 --> 00:04:36,030 Mes tik pasakė i yra lygus nulis, ir taip 0 yra mažiau nei 10, 99 00:04:36,030 --> 00:04:38,040 ir taip, kad sąlyga Tiesa ir mes dabar 100 00:04:38,040 --> 00:04:40,640 pereiti prie vykdyti, kilpą kūną. 101 00:04:40,640 --> 00:04:41,480 Jei tai buvo klaidinga. 102 00:04:41,480 --> 00:04:46,380 Jei, pavyzdžiui, pasakiau vietoj Aš lygus 0 ten sakė, kad aš lygus 15, 103 00:04:46,380 --> 00:04:47,820 int i lygus 15. 104 00:04:47,820 --> 00:04:51,450 Na 15 yra ne mažesnis nei 10, todėl niekada įveskite kilpa kūną 105 00:04:51,450 --> 00:04:55,450 nes Būlio išraiškos ten būtų įvertinti, kad būtų klaidinga. 106 00:04:55,450 --> 00:04:59,060 >> Kai mes eiti per iš viršaus į apačią, mes susiduriame, kad uždarant garbanotas petnešomis, 107 00:04:59,060 --> 00:05:00,830 trečioji dalykas atsitinka. 108 00:05:00,830 --> 00:05:03,840 Skaitiklis kintamasis yra padidinama, arba, tiksliau, linijos 109 00:05:03,840 --> 00:05:07,790 kodo pareiškimo po Antrasis kabliataškis viduje 110 00:05:07,790 --> 00:05:10,500 už kilpos skliausteliuose yra įvykdytas. 111 00:05:10,500 --> 00:05:13,250 Taigi, mes pradėti iki sakydamas int i lygus 0. 112 00:05:13,250 --> 00:05:15,770 Tada mes patikrinti, ar nėra Būlio išraiška yra teisinga. 113 00:05:15,770 --> 00:05:17,469 0 yra mažesnis negu 10 taip tai tiesa. 114 00:05:17,469 --> 00:05:19,510 Taigi mes ketiname tęsti į kūną kilpą. 115 00:05:19,510 --> 00:05:22,676 Daiktai įvyks viduje linijos, ir kai susiduriame su, kad uždarant garbanotas 116 00:05:22,676 --> 00:05:25,660 petnešomis, kitas dalykas, mes padaryti, tai sakome i pliusas, pliusas. 117 00:05:25,660 --> 00:05:28,860 Buvau nulis dabar aš vienas. 118 00:05:28,860 --> 00:05:33,100 Tada mes vėl patikrinti vertę Būlio išraiška viduryje. 119 00:05:33,100 --> 00:05:34,900 Vienas iš jų yra mažesnis nei 10. 120 00:05:34,900 --> 00:05:38,325 Taigi mes pereiti per tai apdoroti vėl ir vėl. 121 00:05:38,325 --> 00:05:40,590 Mes gausite uždarymo garbanotas petnešomis dar kartą. 122 00:05:40,590 --> 00:05:44,090 Mes prieaugio i iš 1-2 ir nuo 2 iki 3. 123 00:05:44,090 --> 00:05:48,290 Ir taip toliau ir taip toliau ir taip toliau, kol Galų gale aš vertė tampa 10. 124 00:05:48,290 --> 00:05:49,950 Ar 10 mažiau nei 10? 125 00:05:49,950 --> 00:05:51,200 Ne. 126 00:05:51,200 --> 00:05:53,800 Skaičiuojant nuo 0, mes dingo per 10 iteracijų kilpa. 127 00:05:53,800 --> 00:05:57,204 Mes pakartoti 10 kartų, tiesiog kaip mes padarėme Scratch blokas. 128 00:05:57,204 --> 00:05:59,370 Ir taip, kad tai iš esmės procesas už keturių kilpa. 129 00:05:59,370 --> 00:06:01,630 >> Dabar neatimtų tikrasis kodas ir išleisti jį 130 00:06:01,630 --> 00:06:05,120 vos keletas pagrindinių bendrųjų ataskaitų. 131 00:06:05,120 --> 00:06:06,550 Štai kas atsitinka. 132 00:06:06,550 --> 00:06:09,290 Visi ataskaitose pradėti vykdomi pirmiausia. 133 00:06:09,290 --> 00:06:11,260 Jūs galite turėti daugiau nei vieną. 134 00:06:11,260 --> 00:06:13,440 Tada Bulio logikos išraiška yra tikrinamas. 135 00:06:13,440 --> 00:06:17,850 Jei išraiška įvertina tiesa, vykdyti kūno kontūro vieną kartą. 136 00:06:17,850 --> 00:06:21,060 Jei išraiška įvertina false, mes padaryta. 137 00:06:21,060 --> 00:06:23,040 Mes neturime vykdyti kūno kilpos išvis. 138 00:06:23,040 --> 00:06:25,530 Po mes įvykdytas kūno linijos vieną kartą, 139 00:06:25,530 --> 00:06:29,487 tada mes darome tai, kas yra prieaugis dalis ten. 140 00:06:29,487 --> 00:06:31,820 Kuris paprastai bus kažkas panašaus i plius, plius 141 00:06:31,820 --> 00:06:34,510 ar kažkas panašaus, kad keičia priešinį kintamąjį. 142 00:06:34,510 --> 00:06:37,390 Po to, kai mes prieaugio, mes vėl patikrinti išraiška 143 00:06:37,390 --> 00:06:41,120 ir pakartokite tuos veiksmus daugiau ir daugiau ir vėl, kol sąvoka yra 144 00:06:41,120 --> 00:06:42,890 nebėra tiesa. 145 00:06:42,890 --> 00:06:44,469 >> Taigi, kas yra naudojimo atvejai kilpa? 146 00:06:44,469 --> 00:06:46,760 Naudokite jūs naudojate Nors kilpa norite kilpa pakartoti 147 00:06:46,760 --> 00:06:51,200 nežinomą skaičių kartų, tačiau jis galbūt gali ne paleisti visi. 148 00:06:51,200 --> 00:06:53,940 Tikrai bendra pavyzdys kurio laiko kilpų naudojamas 149 00:06:53,940 --> 00:06:56,480 yra paleisti kontrolės srautą žaidimą. 150 00:06:56,480 --> 00:06:59,040 Jūs negalite žinoti, kiek laiko vartotojas bus žaisti, 151 00:06:59,040 --> 00:07:01,440 tačiau norite išlaikyti daro tą patį. 152 00:07:01,440 --> 00:07:04,970 Atnaujinant pozicijas Įvairios animacinius ant lentos. 153 00:07:04,970 --> 00:07:07,490 Jūs norite, kad viskas būtų juda visą laiką, 154 00:07:07,490 --> 00:07:09,110 bet jūs neturite žinoti, kada vartotojas ketina nustoti žaisti 155 00:07:09,110 --> 00:07:10,450 arba kai jie ketina paleisti iš gyvenimo. 156 00:07:10,450 --> 00:07:12,741 Taigi, o kilpa yra tikrai geras kažko panašaus. 157 00:07:12,741 --> 00:07:14,130 Tai gera naudojimo atveju. 158 00:07:14,130 --> 00:07:16,230 >> Dėl daryti, o kilpa, tai gana panašios. 159 00:07:16,230 --> 00:07:19,746 Jūs norite, kad kilpa pakartoti nežinomas skaičių kartų, bet ne mažiau kaip vieną kartą. 160 00:07:19,746 --> 00:07:22,370 Jūs galite naudoti šį žaidimą per daug, bet tikrai dažnai naudojamas 161 00:07:22,370 --> 00:07:24,420 yra paskatino įvesties vartotoją. 162 00:07:24,420 --> 00:07:28,609 Apskritai, galima sakyti kažką patinka, duok man teigiamas sveikasis skaičius, 163 00:07:28,609 --> 00:07:30,650 ir jūs galite įdėti, kad viduje, o kilpa darbų. 164 00:07:30,650 --> 00:07:33,900 Taigi ji visada bus užduoti juos bent vieną kartą teigiamą sveikąjį skaičių. 165 00:07:33,900 --> 00:07:36,850 Jei jie jums teigiamas sveikasis skaičius, jums gali išeiti iš kilpos. 166 00:07:36,850 --> 00:07:37,599 Jums gali būti padaryta. 167 00:07:37,599 --> 00:07:39,900 Būlio išraiška do, o gali būti klaidinga. 168 00:07:39,900 --> 00:07:41,137 >> Ir jūs neklauskite juos vėl. 169 00:07:41,137 --> 00:07:44,470 Jei jie jums neigiamą numerį, kuriuo jie tipo kai žodis ar kažką, kad 170 00:07:44,470 --> 00:07:46,630 tikrai ne naudinga tu, gali naudoti 171 00:07:46,630 --> 00:07:49,770 do while cikle grįžti ir padaryti jis vėl ir vėl ir vėl. 172 00:07:49,770 --> 00:07:52,410 Jūs tikrai norite paklausti jiems suteikti jums numerį, kai, 173 00:07:52,410 --> 00:07:56,350 bet jūs neturite žinoti, kaip daug kartų po to jie gali būti kenkėjai. 174 00:07:56,350 --> 00:08:00,540 Ir taip daryti, o tai labai naudinga Bylą numatoma nagrinėti paskatino įvesties vartotoją. 175 00:08:00,540 --> 00:08:03,060 Ir už kilpomis naudoti atveju paprastai yra tada, kai 176 00:08:03,060 --> 00:08:06,230 norite pakartoti kilpa diskretiška skaičių kartų, 177 00:08:06,230 --> 00:08:08,230 nors galbūt ne žinoti kartų skaičių 178 00:08:08,230 --> 00:08:10,040 momentas programa yra parengta. 179 00:08:10,040 --> 00:08:15,510 >> Taigi, pavyzdžiui, gal turite programą kur greitai už skaičių vartotoją. 180 00:08:15,510 --> 00:08:17,660 Ir jie patenka 100. 181 00:08:17,660 --> 00:08:20,510 Ir tada jūsų for ciklas bus tuo atveju paleisti 100 kartų. 182 00:08:20,510 --> 00:08:22,480 O gal jie patenka 1000 jūsų programos 183 00:08:22,480 --> 00:08:24,570 ir tada paleisti į kilpą 1000 kartus. 184 00:08:24,570 --> 00:08:26,987 Tai specifinis skaičių kartų. 185 00:08:26,987 --> 00:08:28,820 Jie nebūtinai žinau, ką tai skaičių 186 00:08:28,820 --> 00:08:31,010 yra momentas, programa yra surinkti. 187 00:08:31,010 --> 00:08:35,010 Tai nepatinka, o kilpa kur ji galėtų būti begalinis. 188 00:08:35,010 --> 00:08:37,127 Tai gana skaičių kad jūs tiesiog nežinau. 189 00:08:37,127 --> 00:08:39,210 Dabar, nors aš apibūdintos visos šios naudojimo atvejai, 190 00:08:39,210 --> 00:08:41,501 jūs turėtumėte žinoti, kad gana daug kas aplinkybė, 191 00:08:41,501 --> 00:08:44,110 galite kaitalioti visus trys iš šių linijų. 192 00:08:44,110 --> 00:08:46,890 Galite naudoti už kilpos, kur jūs priešingu atveju naudoti while cikle. 193 00:08:46,890 --> 00:08:49,860 Galite naudoti for ciklas tose vietovėse, kur norite naudoti, o kilpos ir pan daryti. 194 00:08:49,860 --> 00:08:53,680 Jis gali būti šiek tiek sudėtinga kartais, taip paprastai tai yra gera praktika 195 00:08:53,680 --> 00:08:55,140 laikytis tipiškas naudojimo atveju. 196 00:08:55,140 --> 00:08:57,599 Naudokite daryti, o kilpa, jei jums norėjau kažką vieną kartą, bent jau. 197 00:08:57,599 --> 00:09:00,514 Naudokite for ciklas, jei jūs norite daryti kažkas konkretus skaičių kartų. 198 00:09:00,514 --> 00:09:03,730 Galų gale, tai kodėl yra trijų skirtingų rūšių kilpos. 199 00:09:03,730 --> 00:09:06,172 >> Taigi, jie gali būti naudojami teisinga kontekste. 200 00:09:06,172 --> 00:09:07,880 Bet jūs galite sukeiskite jiems, jei norite. 201 00:09:07,880 --> 00:09:10,790 Jei jums jaustis patogiai su tuo pačiu kilpų ir jūs visada norite naudoti, o kilpų. 202 00:09:10,790 --> 00:09:12,623 Tai yra kažkas, kad jūs galite padaryti, nors ji 203 00:09:12,623 --> 00:09:15,590 gali būti šiek tiek sintaksiškai sudėtinga, kai už kilpa 204 00:09:15,590 --> 00:09:17,850 būtų daug paprastesnis. 205 00:09:17,850 --> 00:09:21,100 >> Mano vardas yra Doug Lloyd ir tai yra CS50. 206 00:09:21,100 --> 00:09:22,688