1 00:00:07,150 --> 00:00:08,850 [Powered by Google Translate] DAVID DICIURCIO: Beraz, oso garrantzitsua da kontzeptua eusten 2 00:00:08,850 --> 00:00:11,010 programazio esparrua nozioa da. 3 00:00:11,010 --> 00:00:13,860 Scope testuinguru aldagai bat da, hain zuzen, gisa defini daiteke 4 00:00:13,860 --> 00:00:15,610 ikusgai den, edo eskuragarri. 5 00:00:15,610 --> 00:00:18,150 Esate baterako, demagun funtzio bat, nagusia, hau da, behar dugu 6 00:00:18,150 --> 00:00:22,570 ustezko batetik bi aldagai bat, x, Kontatzailea. 7 00:00:22,570 --> 00:00:25,690 Ikusten den bezala, nagusia initializes x bat, bistaratzen 8 00:00:25,690 --> 00:00:28,740 testu batzuk, eta gero funtzioa gehikuntza bidez, aurretik 9 00:00:28,740 --> 00:00:30,540 testu inprimatzeko. 10 00:00:30,540 --> 00:00:32,545 Funtzio hau behar bezala exekutatu balitz 11 00:00:32,545 --> 00:00:34,120 inprimatu x 2. 12 00:00:34,120 --> 00:00:35,370 Dezagun saiatuko da. 13 00:00:38,870 --> 00:00:43,075 >> Beraz, ikusi dezakezu bezala, nagusiak ez du egin, zer espero dugu. 14 00:00:43,075 --> 00:00:45,310 1 balioa itzultzen du, eta ez 15 00:00:45,310 --> 00:00:47,150 2 baino espero dugu. 16 00:00:47,150 --> 00:00:50,060 Bug honen arrazoia esparrua azaldu daiteke. 17 00:00:50,060 --> 00:00:52,185 Funtzioa, x, hasieratu dugu 18 00:00:52,185 --> 00:00:53,820 funtzio barruan bakarrik. 19 00:00:53,820 --> 00:00:56,580 Beste era batera esanda, x aldagaia barruan deklaratu lokalean 20 00:00:56,580 --> 00:00:58,640 funtzio nagusia, eta ez da eskuragarria 21 00:00:58,640 --> 00:01:00,210 funtzioa kanpo. 22 00:01:00,210 --> 00:01:03,580 Nagusia bakarrik egoera horretan x sar daitezke. 23 00:01:03,580 --> 00:01:06,990 Gehikuntza deitzen dugun ez dugu gainditu x sarrera gisa, baina 24 00:01:06,990 --> 00:01:08,960 x kopia bat besterik ez da. 25 00:01:08,960 --> 00:01:11,640 Horren ondorioz, funtzio gehikuntza bakarrik gehitzen 26 00:01:11,640 --> 00:01:14,190 balioa 1 x balioa kopia bat. 27 00:01:14,190 --> 00:01:16,170 Baina, berez, ez X. 28 00:01:16,170 --> 00:01:19,090 Nagusira itzuliko gara, x bera ez da aldatu guztietan. 29 00:01:19,090 --> 00:01:22,370 Beraz out inprimatzeko x 1 balioa eman. 30 00:01:22,370 --> 00:01:24,890 >> Beno, ondoren uzten duen galdera: nola konpondu behar dugu 31 00:01:24,890 --> 00:01:26,230 Funtzio hau? 32 00:01:26,230 --> 00:01:29,500 Soluzio bat da gehikuntza itzultzeko balio bat izatea. 33 00:01:29,500 --> 00:01:31,180 Modu honetan, funtzio gehikuntza 34 00:01:31,180 --> 00:01:33,350 ematen diguten zenbaki oso bat. 35 00:01:33,350 --> 00:01:35,420 Hortaz, hona hemen gure kodea bateginaren 36 00:01:35,420 --> 00:01:37,480 ordezko gehikuntza funtzioa. 37 00:01:37,480 --> 00:01:41,510 Hemen, itzuli ordez x + 1, baizik eta amaiera baino zerbait 38 00:01:41,510 --> 00:01:44,070 x x + 1 berdina izanik. 39 00:01:44,070 --> 00:01:46,290 Era berean, konturatu ordezkatu dugun irteera 40 00:01:46,290 --> 00:01:49,630 gehikuntza, aldez aurretik gal, int, adieraziz dela 41 00:01:49,630 --> 00:01:52,230 gehikuntza egingo da orain zaio atzera osoko balioa. 42 00:01:52,230 --> 00:01:55,000 Orain, gehikuntza eskailerak ondoren, balio bat egingo du itzultzeko 43 00:01:55,000 --> 00:01:56,535 2, zehazki zuzendua dago. 44 00:01:59,630 --> 00:02:02,260 >> Esparrua garrantzia erakusten duten beste egoera 45 00:02:02,260 --> 00:02:04,860 scopeloop.c da. 46 00:02:04,860 --> 00:02:07,320 Kodea honetan, bat behar dugu begizta duen aldagaia 47 00:02:07,320 --> 00:02:10,310 guztira urrats bakoitzean zehar hasieratu. 48 00:02:10,310 --> 00:02:13,720 Zoritxarrez, kode hau ez konpilatu. 49 00:02:13,720 --> 00:02:16,690 Hau da, aldakorra guztira benetan ez dituelako existitzen 50 00:02:16,690 --> 00:02:18,550 loop for kanpo. 51 00:02:18,550 --> 00:02:21,000 Loops barruan deklaratu Variables barruan bakarrik existitzen 52 00:02:21,000 --> 00:02:23,967 begizta bera eta gure error frogatu 53 00:02:23,967 --> 00:02:25,880 mezua, guztira undeclared. 54 00:02:25,880 --> 00:02:28,710 Aldakorra guztira dauka oraindik esparruan deklaratu 55 00:02:28,710 --> 00:02:30,420 funtzio nagusia. 56 00:02:30,420 --> 00:02:33,610 Gainera, gure iterazio guztietan loop zehar, 57 00:02:33,610 --> 00:02:36,340 gure guztira reinitializing 0. 58 00:02:36,340 --> 00:02:39,210 Honek, berez, ez da mantendu kodea konpilatzean, baina 59 00:02:39,210 --> 00:02:42,920 guztira ezingo litzateke inoiz balio bat 1 past summing. 60 00:02:42,920 --> 00:02:45,760 >> Berriz ere, zer da hau konpontzeko modurik onena? 61 00:02:45,760 --> 00:02:48,520 Metodo errazago bat guztira tokiko 62 00:02:48,520 --> 00:02:51,990 funtzioa, baizik eta begizta bera baino nagusia. 63 00:02:51,990 --> 00:02:55,210 Hau benetan Kontatzailea guztira izango da, eta, azken finean, 64 00:02:55,210 --> 00:02:57,880 baimendu loop for ondoren inprimatu behar da. 65 00:02:57,880 --> 00:03:00,093 Beste teknika bat egingo dut bakarrik laburki laburtzeko 66 00:03:00,093 --> 00:03:02,190 aldagai global erabilera izango da. 67 00:03:02,190 --> 00:03:04,890 Global aldagai nagusia aurretik deklaratu diren aldagai 68 00:03:04,890 --> 00:03:07,860 mantentzeko bere programa osoan zehar balio duten. 69 00:03:07,860 --> 00:03:10,710 Jakina, funtzio global baten balioa alda daiteke, 70 00:03:10,710 --> 00:03:13,470 baina ez dute joan-esparrua aldagai lokaletik. 71 00:03:13,470 --> 00:03:15,880 Hala eta guztiz ere, aldagai global joera frowned dira 72 00:03:15,880 --> 00:03:18,180 diseinu txarra, ez baitago hobeak dira modu gisa haren 73 00:03:18,180 --> 00:03:20,080 funtzioen artean datuak partekatzea. 74 00:03:20,080 --> 00:03:21,920 Esate baterako, erakusleak erabiliz. 75 00:03:21,920 --> 00:03:24,250 Baina, une horretan beste. 76 00:03:24,250 --> 00:03:26,670 >> Azkenik, garrantzitsua da esparrua ulertzea 77 00:03:26,670 --> 00:03:29,550 ordenagailuaren memoria, edo RAM testuinguruan. 78 00:03:29,550 --> 00:03:32,470 Programa bat abiaraziko dugu, aldagai lokalak eta funtzioak 79 00:03:32,470 --> 00:03:34,040 kokapen zehatz bat gehitu 80 00:03:34,040 --> 00:03:36,010 RAM izeneko pila. 81 00:03:36,010 --> 00:03:39,230 Funtzioak bueltan, aldagai marko pila 82 00:03:39,230 --> 00:03:43,910 eraginkortasunez pila askatzeaz memoria gehiago kendu. 83 00:03:43,910 --> 00:03:46,750 Beraz, esparrua berrikustea, ziurtatu horiek gogoratzen duzu hiru 84 00:03:46,750 --> 00:03:47,980 funtsezko puntuak. 85 00:03:47,980 --> 00:03:51,220 One, esparrua bai lokal edo global izan daiteke. 86 00:03:51,220 --> 00:03:53,990 Araberakoa da non aldagai izendatu da. 87 00:03:53,990 --> 00:03:57,040 Bi, deklaratu edo hasieratu funtzioak aldagaiak dira 88 00:03:57,040 --> 00:03:59,510 tokiko funtzio hori eta ezin da beste batzuek aldatu 89 00:03:59,510 --> 00:04:02,790 funtzioak, gutxienez, ez erakusleak erabili gabe. 90 00:04:02,790 --> 00:04:05,340 Azkenik, aldagai ere loops diren tokiko 91 00:04:05,340 --> 00:04:06,490 deklaratu barruan. 92 00:04:06,490 --> 00:04:08,100 Aldagaiak ez dira irisgarriak 93 00:04:08,100 --> 00:04:09,860 Begizta kanpo. 94 00:04:09,860 --> 00:04:11,170 >> Hori da esparrua orain. 95 00:04:11,170 --> 00:04:12,420 Eskerrik asko ikusteko.