1 00:00:07,150 --> 00:00:08,850 [Powered by Google Translate] DAVID DICIURCIO: Niin tärkeä käsite ymmärtää vuonna 2 00:00:08,850 --> 00:00:11,010 ohjelmointi on käsite soveltamisalaa. 3 00:00:11,010 --> 00:00:13,860 Laajuus voidaan määritellä yhteydessä, jossa muuttuja on 4 00:00:13,860 --> 00:00:15,610 näkyviä tai helposti. 5 00:00:15,610 --> 00:00:18,150 Esimerkiksi Sanotaan meillä on funktio, tärkein, eli 6 00:00:18,150 --> 00:00:22,570 tarkoitus kasvattaa muuttujan, x, yhdestä kahteen. 7 00:00:22,570 --> 00:00:25,690 Kuten näemme, pääasiassa alustaa x yhteen, tulostaa 8 00:00:25,690 --> 00:00:28,740 joitakin tekstiä, niin kulkee funktion lisäys, ennen 9 00:00:28,740 --> 00:00:30,540 tulostaa enemmän tekstiä. 10 00:00:30,540 --> 00:00:32,545 Jos tämä toiminto olisi toimimaan oikein, se olisi 11 00:00:32,545 --> 00:00:34,120 tulostaa x: 2. 12 00:00:34,120 --> 00:00:35,370 Yritetään. 13 00:00:38,870 --> 00:00:43,075 >> Joten, kuten näette, pääasiassa ei tee mitä odotimme. 14 00:00:43,075 --> 00:00:45,310 Se palauttaa arvon 1, pikemminkin 15 00:00:45,310 --> 00:00:47,150 kuin 2 odotimme. 16 00:00:47,150 --> 00:00:50,060 Syy tähän vian voidaan selittää soveltamisalaan. 17 00:00:50,060 --> 00:00:52,185 Vuonna toiminto, tärkein, me alustettu x 18 00:00:52,185 --> 00:00:53,820 vain toiminto. 19 00:00:53,820 --> 00:00:56,580 Toisin sanoen, muuttuja x on paikallisesti 20 00:00:56,580 --> 00:00:58,640 toiminto, tärkein, ja ei ole käytettävissä 21 00:00:58,640 --> 00:01:00,210 ulkopuolella funktion. 22 00:01:00,210 --> 00:01:03,580 Vain tärkeimmät pääsevät x tässä tilanteessa. 23 00:01:03,580 --> 00:01:06,990 Kun me kutsumme lisäys emme siirrä x kuin tulo, mutta 24 00:01:06,990 --> 00:01:08,960 pelkkä kopio x. 25 00:01:08,960 --> 00:01:11,640 Seurauksena tästä, toiminto kasvu vain lisää 26 00:01:11,640 --> 00:01:14,190 arvo 1 kopion arvo x. 27 00:01:14,190 --> 00:01:16,170 Mutta ei X itse. 28 00:01:16,170 --> 00:01:19,090 Kun palaamme pääasiassa x sinänsä ei ole muuttunut lainkaan. 29 00:01:19,090 --> 00:01:22,370 Joten tulostaa x vain tuottaa arvoa 1. 30 00:01:22,370 --> 00:01:24,890 >> No, niin että jää kysymys: miten meidän pitäisi korjata 31 00:01:24,890 --> 00:01:26,230 tämä toiminto? 32 00:01:26,230 --> 00:01:29,500 Yksi ratkaisu on ottaa lisäys palauttaa arvon. 33 00:01:29,500 --> 00:01:31,180 Tällä tavalla, toiminto kasvu tulee 34 00:01:31,180 --> 00:01:33,350 antaa meille takaisin kokonaisluku. 35 00:01:33,350 --> 00:01:35,420 Joten tässä on meidän tarkistettua koodia 36 00:01:35,420 --> 00:01:37,480 vaihtoehtoinen lisäys toiminto. 37 00:01:37,480 --> 00:01:41,510 Täällä me vaan palasi x + 1, eikä vain loppua 38 00:01:41,510 --> 00:01:44,070 jossa x on yhtä kuin x + 1. 39 00:01:44,070 --> 00:01:46,290 Myös otettava huomata, että me korvataan lähdön 40 00:01:46,290 --> 00:01:49,630 lisäys aiemmin mitätöidä, KANS, jossa todetaan, että 41 00:01:49,630 --> 00:01:52,230 lisäys nyt siirtää takaisin kokonaisluku. 42 00:01:52,230 --> 00:01:55,000 Nyt, kun kasvu kulkee, se palata arvo 43 00:01:55,000 --> 00:01:56,535 2, juuri niin kuin halusimme. 44 00:01:59,630 --> 00:02:02,260 >> Toinen tilanne osoittaa soveltamisala merkitys 45 00:02:02,260 --> 00:02:04,860 on scopeloop.c. 46 00:02:04,860 --> 00:02:07,320 Tässä koodi, meillä on silmukka, jossa muuttuja 47 00:02:07,320 --> 00:02:10,310 yhteensä alustetaan kunkin vaiheen aikana. 48 00:02:10,310 --> 00:02:13,720 Valitettavasti tämä koodi ei koota. 49 00:02:13,720 --> 00:02:16,690 Tämä johtuu siitä, että muuttuva koko todellisuudessa ei ole olemassa 50 00:02:16,690 --> 00:02:18,550 ulkopuolella ja silmukka. 51 00:02:18,550 --> 00:02:21,000 Muuttujat julisti sisällä silmukoita olemassa vain sisällä 52 00:02:21,000 --> 00:02:23,967 silmukka itse ja on osoitettu meidän virhe 53 00:02:23,967 --> 00:02:25,880 viestin, yhteensä pimeästi. 54 00:02:25,880 --> 00:02:28,710 Muuttujaa kokonaismäärä ei ole vielä ilmoitettu puitteissa 55 00:02:28,710 --> 00:02:30,420 Toiminnon tärkein. 56 00:02:30,420 --> 00:02:33,610 Lisäksi aikana jokainen iteraatio meidän on silmukka, me 57 00:02:33,610 --> 00:02:36,340 ovat reinitializing meidän yhteensä 0. 58 00:02:36,340 --> 00:02:39,210 Tämä itsessään ei pidä koodia kokoamiseen, mutta se 59 00:02:39,210 --> 00:02:42,920 estäisi yhteensä ikinä summataan arvoon ohi 1. 60 00:02:42,920 --> 00:02:45,760 >> Jälleen, mikä on paras tapa korjata tämä? 61 00:02:45,760 --> 00:02:48,520 Eräs helpompaa menetelmiä lupaan sisältyy yhteensä paikallista 62 00:02:48,520 --> 00:02:51,990 toiminto, tärkeimmät, eikä silmukan itse. 63 00:02:51,990 --> 00:02:55,210 Tämä yhteensä todella kasvattaa, ja lopulta, 64 00:02:55,210 --> 00:02:57,880 jotta se voidaan tulostaa jälkeen varten silmukka. 65 00:02:57,880 --> 00:03:00,093 Toinen tekniikka, että minä vain lyhyesti yhteen olisi 66 00:03:00,093 --> 00:03:02,190 olla käyttöä globaalien muuttujien. 67 00:03:02,190 --> 00:03:04,890 Globaalit muuttujat ovat muuttujia, jotka on ilmoitettu ennen main 68 00:03:04,890 --> 00:03:07,860 että niiden arvon säilyttämiseksi koko ohjelmaa. 69 00:03:07,860 --> 00:03:10,710 Tietenkin toimintoja voi muuttaa arvoa maailmanlaajuisesti, 70 00:03:10,710 --> 00:03:13,470 mutta ne eivät mene pois soveltamisalasta, kuten paikallisia muuttujia. 71 00:03:13,470 --> 00:03:15,880 Kuitenkin käyttämällä globaalien muuttujien taipumus paheksutaan 72 00:03:15,880 --> 00:03:18,180 kun niin huono suunnittelu, koska on olemassa parempia tapoja 73 00:03:18,180 --> 00:03:20,080 tietojen jakamista keskuudessa toimintoja. 74 00:03:20,080 --> 00:03:21,920 Esimerkiksi käyttämällä osoittimia. 75 00:03:21,920 --> 00:03:24,250 Mutta siitä lisää toisella kertaa. 76 00:03:24,250 --> 00:03:26,670 >> Lopuksi, on tärkeää saada käsitys soveltamisalan 77 00:03:26,670 --> 00:03:29,550 yhteydessä tietokoneen muistiin tai RAM. 78 00:03:29,550 --> 00:03:32,470 Kun me suorittaa ohjelman, paikallisia muuttujia ja toimintoja 79 00:03:32,470 --> 00:03:34,040 lisätään tiettyyn sijaintiin 80 00:03:34,040 --> 00:03:36,010 RAM kutsutaan pino. 81 00:03:36,010 --> 00:03:39,230 Kuten palauttavat, pino kehyksiä muuttujat 82 00:03:39,230 --> 00:03:43,910 tehokkaasti poistetaan pinosta vapauttaa lisää muistia. 83 00:03:43,910 --> 00:03:46,750 Joten kun tarkastellaan soveltamisalaan, varmista muistat nämä kolme 84 00:03:46,750 --> 00:03:47,980 avainkohdat. 85 00:03:47,980 --> 00:03:51,220 Yksi, laajuus voi olla joko paikallisia tai maailmanlaajuisia. 86 00:03:51,220 --> 00:03:53,990 Se riippuu siitä, missä muuttuja on julistettu. 87 00:03:53,990 --> 00:03:57,040 Kaksi muuttujat ilmoitetut tai alustetaan toiminnot 88 00:03:57,040 --> 00:03:59,510 paikallista aikaa, että toiminto, eikä sitä voi muuttaa muiden 89 00:03:59,510 --> 00:04:02,790 toimintoihin, ainakaan ilman viitteitä. 90 00:04:02,790 --> 00:04:05,340 Lopuksi muuttujat ovat myös paikallista silmukat ovat 91 00:04:05,340 --> 00:04:06,490 julisti sisällä. 92 00:04:06,490 --> 00:04:08,100 Muuttujat eivät ole käytettävissä 93 00:04:08,100 --> 00:04:09,860 ulkopuolella silmukan. 94 00:04:09,860 --> 00:04:11,170 >> Siinä kaikki nyt soveltamisalasta. 95 00:04:11,170 --> 00:04:12,420 Kiitos katsomassa.