Doug LLOYD: Kif tibda ħidma ma 'funzjonijiet,
Ħaġa oħra se ssir verament importanti li wieħed jifhem,
li huwa l-kunċett ta 'ambitu varjabbli.
Allura ambitu huwa karatteristika ta 'varjabbli
li jiddefinixxi Minn liema funzjonijiet dak il-varjabbli jistgħu jiġu aċċessati.
>> Hemm żewġ ambiti ewlenin fis-C, varjabbli lokali u varjabbli globali.
Issa, varjabbli lokali tista 'biss jiġu aċċessati fil-funzjonijiet
fejn dawn qed jinħolqu.
Huma ma jistgħux jiġu aċċessati minn kull oħra funzjoni li jeżisti fil-programm tiegħek,
biss il-funzjoni fil li hija ġiet maħluqa.
Varjabbli globali, fuq il- naħa l-oħra, jistgħu jiġu aċċessati
minn kull funzjoni fil-programm.
U r-raġuni għal dan hi għaliex mhux qed maħluqa fl-intern
ta 'kwalunkwe funzjoni partikolari.
Aħna niddikjaraw minnhom barra tal il-funzjonijiet kollha, li
ifisser li kull funzjoni jaf fejn huwa u tista 'aċċess u timmanipula dan.
>> S'issa fil-kors li inti stajt pretty ħafna ilhom jaħdmu esklussivament
ma 'varjabbli lokali.
Hawn eżempju ta 'ħafna, ħafna funzjoni prinċipali sempliċi u sempliċi ħafna
Funzjoni addizzjonali li konna bil-miktub.
F'dan il-każ, x, li Stajt kkulurita aħdar biss
li tenfasizza l-lokalità jew l-ambitu ta 'dak il-varjabbli,
huwa lokali għall-funzjoni tripla.
prinċipali ma jistax jirreferi għal x-livelli kollha.
Ma tafx x'inhu.
Ebda funzjoni oħra, fil-fatt, jekk irridu kellhom funzjonijiet addizzjonali fil hawn,
tista 'tirreferi għall x.
>> Bl-istess mod, jirriżulta li stajt b'lewn ikħal, huwa lokali biss lill prinċipali.
Biss prinċipali jaf liema ir-riżultat varjabbli huwa.
triple ma tistax tużah.
>> Issa kif semmejt, jeżistu varjabbli globali.
Jekk inti tiddikjara dak il-varjabbli barra ta 'kwalunkwe funzjoni,
il-funzjonijiet kollha fil- programm jista 'jirreferi għaliha.
Allura f'dan il-każ stajt enfasizzat fir aħdar dikjarazzjoni varjabbli globali.
F'dan il-każ, il- benesseri varjabbli ddikjarati
huwa msejjaħ globali, just biex jkun estremament ċara dwar dan.
Huwa ta 'float tip.
U jien tassenja din l-valur 0.5050.
>> Int ser ikollok avviż li fl prinċipali u triple, I am kapaċi li jirreferu għal globali.
U fil-fatt, jekk immur permezz tal-programm kif indikat, l-ewwel sejħiet ewlenin triple,
timmultiplika tripla globali bi 3, li settijiet valur tagħha sa 1.5-xi ħaġa,
1.51 jew xi ħaġa bħal dik, u imbagħad prinċipali prints wkoll il-valur
tal globali.
Allura prinċipali mhux se jistampa 0.5050, huwa se jistampa żminijiet globali 3, 1.51.
Allura inti ħadthom ltqajna biex ikunu attenti meta int taħdem ma 'varjabbli globali.
Waqt li jkunu qed flessibbli ħafna fil jkunu jistgħu jgħaddu informazzjoni
madwar hekk li kull funzjoni tista 'tagħmel użu minnha,
huwa wkoll jista 'jkollha xi konsegwenzi perikolużi
jekk il-bidliet funzjoni waħda il-valur ta 'varjabbli
qabel ma tistenna li jinbidlu.
>> Għaliex ma jimpurtax din id-distinzjoni?
Għalfejn nagħmlu kura jekk xi varjabbli huma lokali u oħrajn huma globali?
Ukoll, għall-parti l-kbira, varjabbli lokali fl C huma dak li sejjaħ għaddiet mill-valur
meta nagħmlu sejħa funzjoni.
Xi tfisser?
>> Ukoll, meta varjabbli tgħaddi mill-valur, l-callee, li
huwa mod ieħor kif tgħid l-funzjoni li qed tirċievi l-varjabbli li
gets għadda fi bhala input, attwalment ma jirċevix din varjabbli innifsu.
Hija tirċievi tagħha stess Kopja ta 'din taħdem magħhom.
Din hija distinzjoni verament importanti.
Aħna biss raw it-tieni ilu li ma varjabbli globali,
jekk aħna jimmanipula l-globali varjabbli fil-funzjoni waħda, l-effett
f'dik il-funzjoni waħda twettaq permezz għal kull funzjoni oħra.
>> Iżda ma 'varjabbli lokali, li mhux veru.
Kull funzjoni meta jirċievi varjabbli bħala input
jirċievu kopji ta 'dawk il-varjabbli, mhux il-varjabbli nfushom.
Allura x'inhi l-effett sekondarju ta 'dak?
Dan ifisser li l-varjabbli fil l-sejjieħ, il-funzjoni li
qed tagħmel is-sejħa funzjoni, huwa mhux mibdula sakemm inti override dan.
>> Per eżempju, f'dan il-kodiċi foo mhux nbidel f'xejn.
Foo int ugwali 4, sejħa triple tal foo, ġewwa ta 'triple,
nistgħu nistennew li foo kieku jiġi mmultiplikat bi 3 u lura,
imma hemm attwalment l-ebda effett.
>> Hawnhekk għalkemm, differenza sottili ħafna.
Dan ma jkollu l-effett li rridu.
Inti tara għaliex?
Aħna qed imperattivi foo fi prinċipali f'dan il-ħin.
>> Allura foo int ugwali 4, foo ugwali foo triplu, meta nagħmlu dik is-sejħa,
triple gets kopja proprja tiegħu tal foo, kopja proprja tiegħu tal-4.
Hija tgħid ritorn 4 darbiet 3, jew kwalunkwe varjabbli gets għadda fi żminijiet 3.
U allura aħna tassenja r-ritorn valur tal tripla għall foo mill-ġdid.
Allura dan fil-fatt ikun jissostitwixxu foo.
Dan huwa l-uniku mod biex isir dan ma varjabbli lokali.
Allura issa jekk aħna żid ieħor linja tal-kodiċi hawn
fl-aħħar tal ewlenija biex jistampa l-valur tal foo,
ikun fil-fatt jistampa 12.
>> Ambitu varjabbli hija ġeneralment mhux wisq ta 'problema
jekk inti isem kollha ta 'tiegħek varjabbli affarijiet differenti.
Iżda jistgħu jiksbu tip ta 'diżgustanti jekk l-istess isem varjabbli
jidher fil-funzjonijiet multipli, li se jiġri ħafna.
Jekk inti qatt jagħmlu xogħol fil -dinja reali fejn
inti taħdem fuq kollaborattiv programmi u nies fi gruppi differenti
qed jaħdmu flimkien biex jiktbu l-istess programm jew l-istess sett ta 'programmi,
dawn ser spiss użu mill-ġdid varjabbli ismijiet, b'mod partikolari dawk komuni
bħal x, y, i, j, u l-bqija.
>> Imma meta fatturi varjabbli l-istess isem, il-kwistjonijiet ambitu
jistgħu jiksbu ftit delikati li parse.
Per eżempju, inti taf dak li jkun stampat
fl-aħħar ta 'dan il-programm partikolari?
Tieħu minuta.
Pause il-video u aqra permezz ta 'dan il-programm.
Tista 'tara fil-quċċata aħna jkollu dikjarazzjoni funzjoni
għal funzjoni msejħa inkrement.
Dik il-funzjoni tieħu waħda parametru, integer li nitolbu x.
U outputs integer.
Dik hija l-tip ta 'ritorn fil-bidu.
>> Imbagħad għandna prinċipali, koppja ta 'linji tal-kodiċi fil prinċipali, l-aħħar minnhom
hija dikjarazzjoni print.
U ftakar, dak l-kwistjoni hawnhekk.
Dak li huwa attwalment se tkun stampati fl-aħħar ta din il-funzjoni?
U allura aħna attwalment ikollhom l- definizzjoni ta 'inkrement hawn taħt.
>> Allura tieħu minuta, pass permezz il-kodiċi, traċċa affarijiet out.
Taf liema se jiġi stampat fil tmiem dan il-programm partikolari?
>> Kull dritt.
Nisperaw, inti ħadt ftit sekondi li tipprova u parse dan wieħed out.
Ejja nagħmlu dan flimkien.
>> Hekk stajt qasmu l-inkrement tal dikjarazzjoni fil-quċċata hemmhekk.
Kien tip ta 'distrazzjoni.
Mhuwiex varjabbli tagħha stess.
Huwa ma jkollu ambitu tagħha stess.
Huwa biss funzjoni dikjarazzjoni, hekk għal skopijiet
ta 'tipprova parse out x'hemm jiġri f'dan il-programm,
nistgħu kif ukoll biss jevitaw dan.
>> Issa għandna f'dan il-każ, il- Raġuni din il-problema hija delikata
huwa għaliex għandna varjabbli lokali fl kemm prinċipali u inkrement, li kull wieħed minnhom
huwa msejjaħ x.
U naturalment il-qofol ta 'din il-kwistjoni hija jippruvaw suss liema x gets inbidlet
u kif ma jiksbu mibdula.
Hekk stajt kkulurita kull każ ta 'x li l-lokali għal aħmar prinċipali.
U stajt kkulurita kull każ ta x hu lokali biex inkrement blu.
>> Avviż f'dak tielet linja ta prinċipali, y ugwali inkrement
x, li inkrement mhux qed għadda x prinċipali; jew il aħmar x.
Huwa jkollna għadda kopja ta 'dan.
U huwa biss se taħdem ma li kopja tagħha, il-blu x.
Jekk int matematikament inklinat, inti tista
jkunu minflok ħsieb ta 'dan bħala x sub m għall prinċipali u x sub i għall inkrement.
Imma hija l-istess idea.
x sub m, jew il-aħmar x tal fil-slide ta 'qabel,
huma l-varjabbli li huma local-- huwa l-każ ta 'x pjuttost li
huwa lokali li prinċipali, u x sub i, jew il- varjabbli blu fil-slide ta 'qabel,
huma l-każijiet ta 'x li huma lokali biex inkrement.
>> Allura, inti kienu kapaċi biex insemmu dak din il-funzjoni stampata fl-aħħar?
Jien Doug Lloyd, u dan huwa CS50.