1 00:00:00,000 --> 00:00:05,410 2 00:00:05,410 --> 00:00:07,640 >> DOUG Lloyd: Selvä, joten Puhutaanpa silmukoita. 3 00:00:07,640 --> 00:00:10,015 Joten silmukat ovat eräänlainen jäähtyä koska ne mahdollistavat ohjelma 4 00:00:10,015 --> 00:00:12,050 suorittaa riviä koodia yli ja ohi ja yli. 5 00:00:12,050 --> 00:00:15,600 Toistuvasti, ilman kopioida ja liitä tai muuten toistaa niitä. 6 00:00:15,600 --> 00:00:17,630 On olemassa kolme suurta erilaisia ​​silmukoita näet. 7 00:00:17,630 --> 00:00:21,010 Sinun on todennäköisesti tilaisuus käyttää jokainen edetessäsi CS50. 8 00:00:21,010 --> 00:00:22,940 Jotkut näistä silmukat ovat melko tutulta tyhjästä, 9 00:00:22,940 --> 00:00:25,814 niin taas, kuten teimme conditionals, me laitamme heidät vierekkäin 10 00:00:25,814 --> 00:00:28,930 jos on analogisesti voimme tehdä. 11 00:00:28,930 --> 00:00:33,600 >> Ensimmäinen on ikuisesti tyhjästä, joka vertaa while (true). 12 00:00:33,600 --> 00:00:35,390 Tämä on mitä me kutsumme päättymättömään silmukkaan. 13 00:00:35,390 --> 00:00:38,560 Riviä koodia välillä kihara henkselit, aivan kuten palapelin palaset 14 00:00:38,560 --> 00:00:41,190 että mahtuvat C on ikuisesti estää, 15 00:00:41,190 --> 00:00:45,290 tulee suorittaa toistuvasti ylhäältä alas, yli ja ohi ja yli, 16 00:00:45,290 --> 00:00:46,085 ikuisesti. 17 00:00:46,085 --> 00:00:48,710 Loppujen lopuksi, jos muistatte meidän keskustelua Boolen operaattoreilla, 18 00:00:48,710 --> 00:00:51,060 totta on aina totta. 19 00:00:51,060 --> 00:00:53,250 Joten jos teemme jotain niin kauan kuin totta 20 00:00:53,250 --> 00:00:58,227 on true-- se tuntuu hieman Silly-- totta on aina totta, niin se tulee aina ajaa. 21 00:00:58,227 --> 00:01:00,060 Se tulee ajaa ikuisesti ja aina ja ikuisesti kunnes 22 00:01:00,060 --> 00:01:02,900 löytää keino murtaa pois sen break-lause, joka jälleen, 23 00:01:02,900 --> 00:01:06,350 näimme vähän aikaa sitten me puhuivat kytkin. 24 00:01:06,350 --> 00:01:08,725 >> Tai muuten vain tappaa meidän ohjelma, joka muuten, 25 00:01:08,725 --> 00:01:11,110 jos koskaan löytää itsesi tilanne päättymättömään silmukkaan 26 00:01:11,110 --> 00:01:13,484 ja et tiedä miten lopettaa ohjelma käynnissä. 27 00:01:13,484 --> 00:01:16,527 Vain osuma ohjaus ja C ja että saat tappaa ohjelma sinulle. 28 00:01:16,527 --> 00:01:18,360 Mutta tämä, jälleen, on ikuinen silmukka. 29 00:01:18,360 --> 00:01:19,818 Se on silmukka, joka jatkuu ikuisesti. 30 00:01:19,818 --> 00:01:22,570 31 00:01:22,570 --> 00:01:25,610 Nyt, kun silmukoita ei aina ääretön, koska myös 32 00:01:25,610 --> 00:01:27,880 voimme korvata Boolen ilmaisu jotain 33 00:01:27,880 --> 00:01:29,867 hieman enemmän hyötyä kuin vain totta. 34 00:01:29,867 --> 00:01:30,950 Joten tässä on toinen esimerkki. 35 00:01:30,950 --> 00:01:34,600 Vaikka ja jotkut Boolen ilmaisun ja sitten aaltosulkeita. 36 00:01:34,600 --> 00:01:38,310 Se on aika paljon analoginen toistaa kunnes tyhjästä. 37 00:01:38,310 --> 00:01:40,700 Vaikka toinen, minä selittää eron. 38 00:01:40,700 --> 00:01:44,310 >> Joten C, jos ehtolauseke sisällä while-silmukka 39 00:01:44,310 --> 00:01:47,980 on tosi, linjat koodi välillä aaltosulkeiden 40 00:01:47,980 --> 00:01:51,900 tulee suorittaa toistuvasti yli ja yli ja yli kunnes ehtolauseke 41 00:01:51,900 --> 00:01:55,174 epätosi. 42 00:01:55,174 --> 00:01:57,340 Niinpä esimerkiksi, saatat on jonkinlainen laskuri. 43 00:01:57,340 --> 00:02:01,440 Joten sanot alussa tämän silmukan sanoa int x on nolla. 44 00:02:01,440 --> 00:02:06,370 Vaikka X on pienempi kuin 100, tehdä pari asioita sisällä että aaltosulkeita, 45 00:02:06,370 --> 00:02:10,570 sitten lopussa oman silmukka, sanot X plus plus, olet monesko x. 46 00:02:10,570 --> 00:02:13,360 Lopulta X saa 100 ja tulet 47 00:02:13,360 --> 00:02:15,760 lopettaa koska ehto x on vähemmän kuin 100 48 00:02:15,760 --> 00:02:19,416 ei ole enää pitää paikkansa Heti kun x on yhtä suuri kuin 100. 49 00:02:19,416 --> 00:02:21,820 100 ei ole pienempi kuin 100. 50 00:02:21,820 --> 00:02:25,870 >> Nyt hieman harhaanjohtavasti, käyttäytyminen tyhjästä lohko on päinvastainen. 51 00:02:25,870 --> 00:02:29,110 Joten todella varovainen, jos tämä on ensimmäinen kokeilu käyttäen silmukoita. 52 00:02:29,110 --> 00:02:33,630 Pohjimmiltaan, toista kunnes lohko Scratch 53 00:02:33,630 --> 00:02:35,970 toistaa jotain yli ja ohi ja yli, 54 00:02:35,970 --> 00:02:40,460 kunnes lauseke, Boolen ilmentyminen Hexagon on totta. 55 00:02:40,460 --> 00:02:43,860 Joten se pitää tehdä kunnes se on totta. 56 00:02:43,860 --> 00:02:48,881 Samaan aikaan, kun silmukka edelleen tehdä sitä, kunnes se on epätosi. 57 00:02:48,881 --> 00:02:51,630 Joten he ovat melko samanlaisia, mutta siellä on se pieni ero vain 58 00:02:51,630 --> 00:02:55,140 olla varovainen varsinkin kun teet ensimmäinen kokeilu maasta vaihtamassa 59 00:02:55,140 --> 00:02:58,149 tyhjästä osaksi C. 60 00:02:58,149 --> 00:03:00,190 Seuraava Tällainen silmukka on oikeastaan ​​aika samanlainen. 61 00:03:00,190 --> 00:03:02,860 Sitä kutsutaan tehdä, kun silmukka. 62 00:03:02,860 --> 00:03:07,060 Tämä silmukka suorittaa kaikki linjat koodia välillä aaltosulkeiden kerran, 63 00:03:07,060 --> 00:03:09,530 ja sitten se tarkistaa Boolen lauseke. 64 00:03:09,530 --> 00:03:11,700 Jos Boolen lauseke on tosi, 65 00:03:11,700 --> 00:03:14,340 se menen takaisin ja toista että prosessi uudestaan ​​ja uudestaan 66 00:03:14,340 --> 00:03:17,690 ja yli kunnes Boolen lauseke on epätosi. 67 00:03:17,690 --> 00:03:23,370 Joten tämä silmukka, toisin kun silmukka, on taattu suorittaa ainakin kerran. 68 00:03:23,370 --> 00:03:26,080 Tämä voi olla melko hyödyllinen. 69 00:03:26,080 --> 00:03:28,011 >> Lopuksi, meillä on silmukka. 70 00:03:28,011 --> 00:03:30,010 Silmukoita ovat sellaisia syntaktisesti houkuttele 71 00:03:30,010 --> 00:03:32,330 ja siellä on paljon meneillään täällä, joten vastaa minulle 72 00:03:32,330 --> 00:03:34,640 kun yritämme murtaa nämä kappaleet toisistaan. 73 00:03:34,640 --> 00:03:36,810 Yleensä use case of silmukan on sinulle 74 00:03:36,810 --> 00:03:40,136 haluat toistaa jotain tietty määrä kertoja. 75 00:03:40,136 --> 00:03:42,010 Tässä esimerkissä täällä, Minulla on toista lohko 76 00:03:42,010 --> 00:03:44,010 tyhjästä, mikä on analoginen silmukka 77 00:03:44,010 --> 00:03:47,340 C, toistaa jotain 10 kertaa. 78 00:03:47,340 --> 00:03:49,250 Ja varten silmukka Vasemmalla, joka 79 00:03:49,250 --> 00:03:51,410 on neljä silmukka, joka tekisi samoin. 80 00:03:51,410 --> 00:03:52,570 Tämä menisi 10 kertaa. 81 00:03:52,570 --> 00:03:56,720 Laskien nolla, me increment kukin pass silmukan. 82 00:03:56,720 --> 00:03:59,220 Ja me pitää tehdä, että kunnes i on pienempi kuin 10. 83 00:03:59,220 --> 00:04:00,134 >> Mitä tapahtuu? 84 00:04:00,134 --> 00:04:01,550 Siellä on paljon koodia siellä. 85 00:04:01,550 --> 00:04:03,424 Katsotaan murtaa se alas mitä tapahtuu askel 86 00:04:03,424 --> 00:04:05,684 askeleelta kuin me kaivaa silmukka. 87 00:04:05,684 --> 00:04:08,350 Ensimmäinen asia, joka tapahtui on laskuri muuttuja on keskus. 88 00:04:08,350 --> 00:04:11,970 Kaikki vasemmalla että ensimmäinen puolipiste sulkujen 89 00:04:11,970 --> 00:04:12,970 suoritetaan. 90 00:04:12,970 --> 00:04:15,180 Tässä tapauksessa olemme sanomalla int i on yhtä suuri kuin 0. 91 00:04:15,180 --> 00:04:18,709 Julistamisesta uusi muuttuja nimeltä I, että muuttujat on eräänlainen kokonaisluku 92 00:04:18,709 --> 00:04:22,570 ja sanomme arvo sisällä että muuttuja tulee olemaan nolla. 93 00:04:22,570 --> 00:04:25,480 >> Toinen asia teemme on me sitten heti arvioida 94 00:04:25,480 --> 00:04:26,750 Boolen lauseke. 95 00:04:26,750 --> 00:04:30,100 Boolen lauseke on keskellä kaksi puolipisteet. 96 00:04:30,100 --> 00:04:31,360 I on alle 10. 97 00:04:31,360 --> 00:04:32,410 Se on totta täällä, eikö? 98 00:04:32,410 --> 00:04:36,030 Olemme juuri sanoi i on yhtä suuri kuin nolla, ja siten, 0 on pienempi kuin 10, 99 00:04:36,030 --> 00:04:38,040 ja niin, että ehto on totta ja me nyt 100 00:04:38,040 --> 00:04:40,640 edetä suorittamaan runkoon silmukan. 101 00:04:40,640 --> 00:04:41,480 Jos se oli väärä. 102 00:04:41,480 --> 00:04:46,380 Jos esimerkiksi, sanoin sijasta i on yhtä kuin 0 siellä Sanoin vastaa 15, 103 00:04:46,380 --> 00:04:47,820 int i vastaa 15. 104 00:04:47,820 --> 00:04:51,450 Hyvin 15 ei ole pienempi kuin 10, niin me ei koskaan päästä elimistöön silmukan 105 00:04:51,450 --> 00:04:55,450 koska Boolen lauseke ei olisi arvioi vääriksi. 106 00:04:55,450 --> 00:04:59,060 >> Kun käymme läpi ylhäältä alas, kohtaamme että sulkeminen kihara ahdin, 107 00:04:59,060 --> 00:05:00,830 Kolmas asia tapahtuu. 108 00:05:00,830 --> 00:05:03,840 Laskuri muuttuja on kasvatetaan, tai pikemminkin, linjat 109 00:05:03,840 --> 00:05:07,790 koodia lausuman jälkeen toinen puolipiste sisällä 110 00:05:07,790 --> 00:05:10,500 silmukoita suluissa suoritetaan. 111 00:05:10,500 --> 00:05:13,250 Joten aloitamme hoitaa sanomalla int i on yhtä suuri kuin 0. 112 00:05:13,250 --> 00:05:15,770 Sitten tarkistaa, onko Boolen lauseke on tosi. 113 00:05:15,770 --> 00:05:17,469 0 on pienempi kuin, 10 joten se on totta. 114 00:05:17,469 --> 00:05:19,510 Joten aiomme edetä kehoon silmukka. 115 00:05:19,510 --> 00:05:22,676 Asioita tapahtuu sisällä silmukan, ja Kun kohtaamme että sulkeminen kihara 116 00:05:22,676 --> 00:05:25,660 ahdin, seuraava asia, do on sanomme i plus, plus. 117 00:05:25,660 --> 00:05:28,860 Olin nolla Nyt on yksi. 118 00:05:28,860 --> 00:05:33,100 Sitten me taas tarkistaa arvoa Boolen lauseke keskellä. 119 00:05:33,100 --> 00:05:34,900 Yksi on alle 10. 120 00:05:34,900 --> 00:05:38,325 Joten käymme läpi tämän käsittelee uudelleen ja uudelleen. 121 00:05:38,325 --> 00:05:40,590 Me saamme sulkeminen kihara ahdin uudelleen. 122 00:05:40,590 --> 00:05:44,090 Me kasvattaa i maasta 1-2 ja 2-3. 123 00:05:44,090 --> 00:05:48,290 Ja niin edelleen ja niin edelleen ja niin edelleen, kunnes Lopulta arvosta tulee 10. 124 00:05:48,290 --> 00:05:49,950 On 10 vähemmän kuin 10? 125 00:05:49,950 --> 00:05:51,200 Ei. 126 00:05:51,200 --> 00:05:53,800 Laskien 0, olemme käyneet kautta 10 toistojen silmukan. 127 00:05:53,800 --> 00:05:57,204 Olemme toistetaan 10 kertaa, vain kuten teimme Scratch lohkossa. 128 00:05:57,204 --> 00:05:59,370 Ja niin se on pohjimmiltaan Menetelmä neljä silmukka. 129 00:05:59,370 --> 00:06:01,630 >> Nyt otetaan pois Varsinainen koodi ja laittoi pallon 130 00:06:01,630 --> 00:06:05,120 vain joitakin perustietoja yleisiä lausuntoja. 131 00:06:05,120 --> 00:06:06,550 Tässä mitä tapahtuu. 132 00:06:06,550 --> 00:06:09,290 Kaikki lausunnot aloittaa toteutetaan ensin. 133 00:06:09,290 --> 00:06:11,260 Saatat olla enemmän kuin yksi. 134 00:06:11,260 --> 00:06:13,440 Sitten, Boolen tarkistetaan. 135 00:06:13,440 --> 00:06:17,850 Jos lauseke on tosi, suorittaa elin silmukka kerran. 136 00:06:17,850 --> 00:06:21,060 Jos lauseke arvioi false, olemme tehneet. 137 00:06:21,060 --> 00:06:23,040 Emme suorita elin silmukka lainkaan. 138 00:06:23,040 --> 00:06:25,530 Kun olemme teloitettiin elin silmukka kerran, 139 00:06:25,530 --> 00:06:29,487 me sitten tehdä mitä on lisäys osa siellä. 140 00:06:29,487 --> 00:06:31,820 Joka on yleensä olemaan jotain i plus, plus 141 00:06:31,820 --> 00:06:34,510 tai jotain, että muutetaan laskuri muuttuja. 142 00:06:34,510 --> 00:06:37,390 Sitten, kun olemme suurennettava, me tarkista ilmaisu uudelleen 143 00:06:37,390 --> 00:06:41,120 ja toista ne vaiheet ja yli ja yli kunnes lauseke on 144 00:06:41,120 --> 00:06:42,890 ei ole enää totta. 145 00:06:42,890 --> 00:06:44,469 >> Mitkä ovat käytön tapauksissa silmukan? 146 00:06:44,469 --> 00:06:46,760 Käytä käytät taas silmukka kun haluat silmukan toistaa 147 00:06:46,760 --> 00:06:51,200 tuntemattoman määrän kertoja, mutta se ehkä eivät välttämättä toimi kaikilla. 148 00:06:51,200 --> 00:06:53,940 Todella yhteinen esimerkki kun looping käytössä 149 00:06:53,940 --> 00:06:56,480 on ajaa ohjaus virtaus peli. 150 00:06:56,480 --> 00:06:59,040 Et ehkä tiedä, kuinka kauan käyttäjä aiotaan pelaa, 151 00:06:59,040 --> 00:07:01,440 mutta haluat pitää tehdä sama asia. 152 00:07:01,440 --> 00:07:04,970 Päivittäminen kannat eri sprite taululle. 153 00:07:04,970 --> 00:07:07,490 Haluat pitää asiat koko ajan liikkeessä, 154 00:07:07,490 --> 00:07:09,110 mutta et tiedä milloin käyttäjä aikoo lopettaa pelaamisen 155 00:07:09,110 --> 00:07:10,450 tai kun he aikovat loppuu ihmishenkiä. 156 00:07:10,450 --> 00:07:12,741 Joten kun silmukka on todella hyvä jotain. 157 00:07:12,741 --> 00:07:14,130 Se on hyvä käyttötapaus. 158 00:07:14,130 --> 00:07:16,230 >> Saat tehdä, kun silmukka, se on melko samanlainen. 159 00:07:16,230 --> 00:07:19,746 Haluat silmukka toistaa tuntematon monta kertaa, mutta vähintään kerran. 160 00:07:19,746 --> 00:07:22,370 Voit käyttää tätä peliä liian, mutta todella yhteinen käyttötapaus 161 00:07:22,370 --> 00:07:24,420 on kehottaa käyttäjää syöttämään. 162 00:07:24,420 --> 00:07:28,609 Yleensä voisi sanoa jotain kuten, anna minulle positiivinen kokonaisluku, 163 00:07:28,609 --> 00:07:30,650 ja saatat laittaa että sisällä do while-silmukka. 164 00:07:30,650 --> 00:07:33,900 Joten se aina pyytää heitä vähintään kerran positiivinen kokonaisluku. 165 00:07:33,900 --> 00:07:36,850 Jos he antavat sinulle positiivinen kokonaisluku, saatat rikkoa ulos silmukan. 166 00:07:36,850 --> 00:07:37,599 Saatat tehdä. 167 00:07:37,599 --> 00:07:39,900 Boolen ilmaisun tehdä vaikka saattaa olla väärä. 168 00:07:39,900 --> 00:07:41,137 >> Ja et pyydä heitä uudelleen. 169 00:07:41,137 --> 00:07:44,470 Jos he antavat sinulle negatiivinen luku, jossa he kirjoittavat joitakin sana tai jotain, joka on 170 00:07:44,470 --> 00:07:46,630 ei todellakaan hyödyllistä sinua, voit käyttää 171 00:07:46,630 --> 00:07:49,770 tehdä, kun silmukka mennä takaisin ja tehdä sen uudestaan ​​ja uudestaan ​​ja uudestaan. 172 00:07:49,770 --> 00:07:52,410 Et varmasti halua kysyä heitä antamaan sinulle useita kerran, 173 00:07:52,410 --> 00:07:56,350 mutta et tiedä, kuinka monta kertaa jälkeen, että ne saattavat olla tuholaisia. 174 00:07:56,350 --> 00:08:00,540 Ja niin tehdä, kun se on paljon hyötyä tapauksessa kehottaa käyttäjää syöttämään. 175 00:08:00,540 --> 00:08:03,060 Ja silmukoita käyttää tapaus on tyypillisesti kun 176 00:08:03,060 --> 00:08:06,230 haluat toistaa silmukan diskreetti monta kertaa, 177 00:08:06,230 --> 00:08:08,230 vaikka et ehkä ole tietää monta kertaa 178 00:08:08,230 --> 00:08:10,040 hetki ohjelma on koottu. 179 00:08:10,040 --> 00:08:15,510 >> Niinpä esimerkiksi, ehkä sinulla on ohjelma jossa voit pyytää käyttäjältä numeron. 180 00:08:15,510 --> 00:08:17,660 Ja ne tulevat 100. 181 00:08:17,660 --> 00:08:20,510 Ja sitten varten silmukka tällöin ajaa 100 kertaa. 182 00:08:20,510 --> 00:08:22,480 Tai ehkä he tulevat 1000 oman ohjelman 183 00:08:22,480 --> 00:08:24,570 ja sitten ajaa silmukka 1000 kertaa. 184 00:08:24,570 --> 00:08:26,987 Se on tietty määrä kertoja. 185 00:08:26,987 --> 00:08:28,820 Ne eivät välttämättä tiedä mitä se numero 186 00:08:28,820 --> 00:08:31,010 on hetki ohjelma on koottu. 187 00:08:31,010 --> 00:08:35,010 Se ei ole kuin while-silmukka jossa se voisi olla ääretön. 188 00:08:35,010 --> 00:08:37,127 Se on melko numero että te vain tiedä. 189 00:08:37,127 --> 00:08:39,210 Nyt vaikka olen hahmoteltu kaikki nämä käyttötapauksia, 190 00:08:39,210 --> 00:08:41,501 sinun pitäisi tietää, että melko paljon kaikissa olosuhteissa, 191 00:08:41,501 --> 00:08:44,110 voit vaihtaa kaikki kolme näistä silmukoita. 192 00:08:44,110 --> 00:08:46,890 Voit käyttää silmukka jossa muuten käyttää while-silmukka. 193 00:08:46,890 --> 00:08:49,860 Voit käyttää silmukka missä haluat käyttää tehdä, kun silmukka ja niin edelleen. 194 00:08:49,860 --> 00:08:53,680 Se voi olla hieman hankala joskus, niin yleensä se on hyvä käytäntö 195 00:08:53,680 --> 00:08:55,140 noudattaa tyypillistä käyttöä tapaus. 196 00:08:55,140 --> 00:08:57,599 Käytä tehdä, kun silmukka jos halusi jotain kerran, ainakin. 197 00:08:57,599 --> 00:09:00,514 Käytä varten silmukka, jos haluat tehdä jotain tietty määrä kertoja. 198 00:09:00,514 --> 00:09:03,730 Loppujen, siksi on olemassa kolme erilaista silmukoita. 199 00:09:03,730 --> 00:09:06,172 >> Joten niitä voidaan käyttää oikeassa kontekstissa. 200 00:09:06,172 --> 00:09:07,880 Mutta voit vaihtaa niitä, jos haluat. 201 00:09:07,880 --> 00:09:10,790 Jos tunnet olosi mukavaksi, kun silmukoita ja haluat aina käyttää, kun silmukoita. 202 00:09:10,790 --> 00:09:12,623 Se on jotain, että voit tehdä, vaikka se 203 00:09:12,623 --> 00:09:15,590 saattaa olla hieman syntaktisesti hankala, jossa on silmukka 204 00:09:15,590 --> 00:09:17,850 olisi paljon yksinkertaisempaa. 205 00:09:17,850 --> 00:09:21,100 >> Nimeni on Doug Lloyd ja tämä on CS50. 206 00:09:21,100 --> 00:09:22,688