[Powered by Google Translate] DAVID DICIURCIO: Allura kunċett importanti biex taqbadha fil
programmazzjoni huwa l-kunċett ta 'ambitu.
Kamp ta 'applikazzjoni jista' jiġi definit bħala l-kuntest li fih il-varjabbli huwa
viżibbli jew aċċessibbli.
Per eżempju, ejja ngħidu li għandna funzjoni, prinċipali, jiġifieri
suppost inkrement varjabbli, x, minn sena sa tnejn.
Kif nistgħu naraw, prinċipali initializes x għal wieħed, stampi
out xi test, allura jibda l-inkrement funzjoni, qabel ma
istampar test aktar.
Jekk din il-funzjoni kellu jimxi sew, ikun
jistampa x bħala 2.
Ejja nippruvaw dan.
>> Allura, kif tistgħu taraw, prinċipali ma tagħmel dak li aħna mistennija li.
Hija lura l-valur 1, pjuttost
milli l-2 konna qed nistennew.
Ir-raġuni għal dan bug jista 'jiġi spjegat mill-ambitu.
Fil-funzjoni, prinċipali, aħna initialized x
biss fi ħdan il-funzjoni.
Fi kliem ieħor, il-x varjabbli huwa ddikjarat lokalment fi ħdan l-
funzjoni, prinċipali, u ma jkunx aċċessibbli
barra tal-funzjoni.
Biss prinċipali tista 'aċċess x f'din is-sitwazzjoni.
Meta nitolbu żieda ma ngħaddux x bħala l-input, imma
sempliċement kopja ta 'x.
Bħala riżultat ta 'dan, l-inkrement funzjoni biss iżid
il-valur ta '1 għal kopja tal-valur ta' x.
Iżda mhux għal x innifsu.
Meta nerġgħu lura għal prinċipali, x nnifisha ma nbidel f'xejn.
Allura stampar x biss se jagħtu l-valur ta '1.
>> Ukoll, allura li tħalli l-kwistjoni: kif għandna tiffissa
din il-funzjoni?
Soluzzjoni waħda hija li inkrement ritorn ta 'valur.
B'dan il-mod, l-inkrement funzjoni se
agħtina lura numru sħiħ.
Allura hawnhekk il-kodiċi rivedut tagħna ma 'l-
funzjoni sostitut inkrement.
Hawnhekk, aħna minflok lura l-x + 1, aktar milli biss il-għan
ma x tkun ugwali għal x + 1.
Ukoll, jieħdu l-avviż li aħna mibdula l-produzzjoni ta '
inkrement, qabel null, bil int, li jiddikjara li
inkrement issa se jgħaddu lura valur sħiħ.
Issa, wara runs inkrementali, se terġa 'lura b'valur ta'
2, eżattament kif aħna maħsub.
>> Sitwazzjoni oħra li turi importanza ambitu tal-
huwa fil scopeloop.c.
F'dan il-kodiċi, aħna għandna biex linja fejn il-varjabbli
total huwa initialized matul kull pass.
Sfortunatament, dan il-kodiċi ma jikkumpilaw.
Dan huwa minħabba li t-total varjabbli fil-fatt ma jeżistix
barra l-linja ta '.
Varjabbli ddikjarati fi ħdan linji jeżisti biss fi ħdan il-
loop innifsu u hija murija bi żball tagħna
, messaġġ total mhux iddikjarat.
It-total varjabbli għad trid tiġi dikjarata fl-ambitu
tal-funzjoni prinċipali.
Barra minn hekk, matul kull iterazzjoni ta 'tagħna għall loop, aħna
huma reinitializing totali tagħna għal 0.
Dan fih innifsu ma jżommx il-kodiċi mill-kompilazzjoni, imma
tipprevjeni totali minn qatt jingħaddu għal valur passat 1.
>> Għal darb'oħra, dak li hu l-aħjar mod biex jiffissaw dan?
Wieħed mill-metodi eħfef tinkludi li total lokali biex
il-funzjoni, prinċipali, minflok għal-linja innifsu.
Dan se totali li fil-fatt inkrement, u finalment,
jippermettu li jiġu stampati wara l-linja ta '.
Teknika oħra li jien ser biss fil-qosor tqassar kieku
jkun l-użu ta 'varjabbli globali.
Varjabbli globali huma varjabbli li huma ddikjarati qabel prinċipali
li jżommu l-valur tagħhom matul il-programm kollu.
Of course, il-funzjonijiet jistgħu jibdlu l-valur ta 'globali,
iżda dawn ma jmorrux barra mill-iskop bħal varjazzjonijiet lokali.
Madankollu, bl-użu varjabbli globali tendenza li jkunu frowned
fuq bħala disinn ħażin, peress li hemm modi aħjar ta '
kondiviżjoni ta 'data fost funzjonijiet.
Per eżempju, bl-użu pointers.
Iżda aktar fuq dan ieħor żmien.
>> Fl-aħħarnett, huwa importanti li jkollhom għarfien ta 'ambitu
fil-kuntest tal-memorja tal-kompjuter, jew RAM.
Meta aħna tesegwixxi programm, varjabbli lokali u l-funzjonijiet
huma miżjuda ma 'lokazzjoni speċifika fil-
RAM imsejjaħ il-munzell.
Kif funzjonijiet ritorn, il-frejms munzell tal-varjabbli huma
effettivament imneħħi mill-munzell ħelsien memorja aktar.
Allura meta jirrevedi ambitu, kun ċert li tiftakar dawn it-tliet
punti ewlenin.
Wieħed, l-ambitu jista 'jkun jew lokali jew globali.
Hija tiddependi fuq fejn il-varjabbli huwa ddikjarat.
Żewġ, varjabbli dikjarati jew initialized fil-funzjonijiet huma
lokali biex dik il-funzjoni u ma jistgħux jinbidlu b'mezzi oħra
funzjonijiet, almenu mhux mingħajr l-użu pointers.
Fl-aħħarnett, varjabbli huma wkoll lokali għal-linji li huma
iddikjarati taħt.
Il-varjabbli ma jkunux aċċessibbli
barra tal-linja.
>> Li kollox għal issa fuq firxa.
Grazzi għall-ħars.