[Powered by Google Translate] DAVID DICIURCIO: Beraz, oso garrantzitsua da kontzeptua eusten programazio esparrua nozioa da. Scope testuinguru aldagai bat da, hain zuzen, gisa defini daiteke ikusgai den, edo eskuragarri. Esate baterako, demagun funtzio bat, nagusia, hau da, behar dugu ustezko batetik bi aldagai bat, x, Kontatzailea. Ikusten den bezala, nagusia initializes x bat, bistaratzen testu batzuk, eta gero funtzioa gehikuntza bidez, aurretik testu inprimatzeko. Funtzio hau behar bezala exekutatu balitz inprimatu x 2. Dezagun saiatuko da. Beraz, ikusi dezakezu bezala, nagusiak ez du egin, zer espero dugu. 1 balioa itzultzen du, eta ez 2 baino espero dugu. Bug honen arrazoia esparrua azaldu daiteke. Funtzioa, x, hasieratu dugu funtzio barruan bakarrik. Beste era batera esanda, x aldagaia barruan deklaratu lokalean funtzio nagusia, eta ez da eskuragarria funtzioa kanpo. Nagusia bakarrik egoera horretan x sar daitezke. Gehikuntza deitzen dugun ez dugu gainditu x sarrera gisa, baina x kopia bat besterik ez da. Horren ondorioz, funtzio gehikuntza bakarrik gehitzen balioa 1 x balioa kopia bat. Baina, berez, ez X. Nagusira itzuliko gara, x bera ez da aldatu guztietan. Beraz out inprimatzeko x 1 balioa eman. Beno, ondoren uzten duen galdera: nola konpondu behar dugu Funtzio hau? Soluzio bat da gehikuntza itzultzeko balio bat izatea. Modu honetan, funtzio gehikuntza ematen diguten zenbaki oso bat. Hortaz, hona hemen gure kodea bateginaren ordezko gehikuntza funtzioa. Hemen, itzuli ordez x + 1, baizik eta amaiera baino zerbait x x + 1 berdina izanik. Era berean, konturatu ordezkatu dugun irteera gehikuntza, aldez aurretik gal, int, adieraziz dela gehikuntza egingo da orain zaio atzera osoko balioa. Orain, gehikuntza eskailerak ondoren, balio bat egingo du itzultzeko 2, zehazki zuzendua dago. Esparrua garrantzia erakusten duten beste egoera scopeloop.c da. Kodea honetan, bat behar dugu begizta duen aldagaia guztira urrats bakoitzean zehar hasieratu. Zoritxarrez, kode hau ez konpilatu. Hau da, aldakorra guztira benetan ez dituelako existitzen loop for kanpo. Loops barruan deklaratu Variables barruan bakarrik existitzen begizta bera eta gure error frogatu mezua, guztira undeclared. Aldakorra guztira dauka oraindik esparruan deklaratu funtzio nagusia. Gainera, gure iterazio guztietan loop zehar, gure guztira reinitializing 0. Honek, berez, ez da mantendu kodea konpilatzean, baina guztira ezingo litzateke inoiz balio bat 1 past summing. Berriz ere, zer da hau konpontzeko modurik onena? Metodo errazago bat guztira tokiko funtzioa, baizik eta begizta bera baino nagusia. Hau benetan Kontatzailea guztira izango da, eta, azken finean, baimendu loop for ondoren inprimatu behar da. Beste teknika bat egingo dut bakarrik laburki laburtzeko aldagai global erabilera izango da. Global aldagai nagusia aurretik deklaratu diren aldagai mantentzeko bere programa osoan zehar balio duten. Jakina, funtzio global baten balioa alda daiteke, baina ez dute joan-esparrua aldagai lokaletik. Hala eta guztiz ere, aldagai global joera frowned dira diseinu txarra, ez baitago hobeak dira modu gisa haren funtzioen artean datuak partekatzea. Esate baterako, erakusleak erabiliz. Baina, une horretan beste. Azkenik, garrantzitsua da esparrua ulertzea ordenagailuaren memoria, edo RAM testuinguruan. Programa bat abiaraziko dugu, aldagai lokalak eta funtzioak kokapen zehatz bat gehitu RAM izeneko pila. Funtzioak bueltan, aldagai marko pila eraginkortasunez pila askatzeaz memoria gehiago kendu. Beraz, esparrua berrikustea, ziurtatu horiek gogoratzen duzu hiru funtsezko puntuak. One, esparrua bai lokal edo global izan daiteke. Araberakoa da non aldagai izendatu da. Bi, deklaratu edo hasieratu funtzioak aldagaiak dira tokiko funtzio hori eta ezin da beste batzuek aldatu funtzioak, gutxienez, ez erakusleak erabili gabe. Azkenik, aldagai ere loops diren tokiko deklaratu barruan. Aldagaiak ez dira irisgarriak Begizta kanpo. Hori da esparrua orain. Eskerrik asko ikusteko.