DOUG LLOYD: Nagu te alustada töötavad funktsioonid,
Teine asi hakkab muutuma tõesti oluline mõista,
mis on mõiste muutuva ulatusega.
Nii ulatus on iseloomulik muutuva
mis määratleb millest funktsioonid muutuja pääseb.
>> On kaks peamist õppesuuna C, kohalikud muutujad ja globaalseid muutujaid.
Nüüd, kohalikud muutujad saab ainult ligi jooksul funktsioonid
kus nad on loodud.
Nad ei pääse igal muul funktsioon, mis on olemas oma programm,
ainult funktsiooni milleks ta loodi.
Globaalne muutuja kohta Teisalt saab tutvuda
mis tahes funktsiooni programmis.
Ja selle põhjuseks on sest nad ei loonud sees
Iga konkreetse funktsiooni.
Me kinnitame neid väljaspool kõiki funktsioone, mida
tähendab, et iga funktsiooni teab, kus see on ja saab juurdepääsu ja manipuleerida seda.
>> Seni käigus olete päris palju töötanud ainult
kohalike muutujate.
Siin on näide väga, väga lihtne põhiülesanne ja väga lihtne
lisafunktsiooni, et oleme kirjutatud.
Sel juhul X mille Olen värvitud roheliseks lihtsalt
rõhutada kohaliku või ulatust, et muutuja,
on kohaliku funktsioonile kolmekordne.
Peamised ei viita x üldse.
See ei tea, mis see on.
Ükski teine ​​funktsioon, tegelikult kui me oli lisafunktsioone siin,
võib viidata x.
>> Samuti tulemused, mis ma olen sinine, on kohalik ainult peamine.
Ainult peamine teab, mida muutuja tulemus on.
triple ei saa seda kasutada.
>> Nüüd, kui ma mainisin, globaalseid muutujaid ei eksisteeri.
Kui te tunnistada, et muutuja väljaspool mis tahes funktsiooni,
kõik funktsioonid Programmi saab viitavad sellele.
Nii et kui ma olen esile roheline globaalne muutuja deklaratsiooni.
Sel juhul muutujat deklareeritud
nimetatakse globaalse, vaid väga selge see.
See on tüüpi float.
Ja ma määrata selle väärtus 0,5050.
>> Märkad, et peamine ja triple, Võin viidata ülemaailmne.
Ja tegelikult, kui ma lähen läbi programmi märgitud, peamine esimene kõne kolmekordne,
triple paljuneb globaalse 3, mis seab selle väärtuseks 1,5-midagi,
1.51 või midagi sellist, ja siis peamine ka prindib väärtus
globaalne.
Nii peamine ei prindi välja 0,5050, siis trükib välja globaalse korda 3, 1.51.
Nii et sa pead olema ettevaatlik, kui te töötate globaalseid muutujaid.
Kuigi nad on väga paindlik on võimalik edastada teavet
umbes nii, et iga funktsiooni saab kasutada,
Samuti võib olla mõned ohtlikud tagajärjed
kui üks funktsioon muudatused väärtus muutuja
Enne ootavad, et seda muuta.
>> Miks see eristus oluline?
Miks me hoolime, kas mõned muutujad kohalikud ja teised on globaalne?
Noh, enamasti kohalikud muutujad C on, mida nimetatakse möödus väärtus
kui me teeme funktsioon kõne.
Mida see tähendab?
>> Noh, kui muutuja on möödas väärtusest, väljakutsutute, mis
On veel üks viis öelda funktsiooni mis on saanud muutuja
saab edasi ka sisendina, siis tegelikult ei saa selle muutuja ise.
Ta saab oma koopia koos töötada.
See on tõesti oluline erinevus.
Me lihtsalt nägin teist tagasi et globaalsete muutujate
kui me manipuleerida globaalse muutuja üks funktsioon, mõju
selles üks funktsioon kannab läbi iga teine ​​funktsioon.
>> Kuid kohalikud muutujad, see pole tõsi.
Iga funktsiooni, kui see saab muutujaid sisendina
saada koopiaid nendest muutujatest, mitte muutujad ise.
Mis on kõrvaltoime, mis?
See tähendab, et muutuja helistaja funktsiooni, mis
on tegemist funktsioon kõne, on muutmata, kui sa alistada.
>> Näiteks see kood suva ei ole muutunud üldse.
Int suva võrdub 4, helista triple foo, sees kolmekordne,
ootame, et suva oleks korrutatakse 3 ja tagasi,
aga seal on tegelikult mingit mõju.
>> Siin aga väga väike erinevus.
See ei mõjuta tahame.
Kas sa näed, miks?
Me ülekaaluka suva peamistes seekord.
>> Nii int foo võrdub 4, foo võrdub triple suva, kui me teeme, et kõne
triple saab oma koopia foo, oma koopia 4.
Ta ütleb, tagasi 4 korda 3, või mis iganes muutuja saab edasi aegadel 3.
Ja siis anname vastutasuks väärtus triple foo uuesti.
Nii see tegelikult oleks kirjutada suva.
See on ainus viis, kuidas seda teha seda kohaliku muutuja.
Nüüd, kui me lisada veel koodirida siin
lõpus põhiliselt välja printida väärtus suva,
see oleks tegelikult välja printida 12.
>> Muutuja ulatust on üldiselt mitte liiga suur probleem
kui sa nimetada kõiki oma muutujad erinevaid asju.
Aga see võib saada mingi vastik kui sama muutuja nimi
ilmub mitmeid funktsioone, mis juhtub palju.
Kui sa kunagi ei tööta reaalses maailmas, kus
te töötate koostöö programmide ja inimestega erinevates meeskondades
töötavad koos kirjutada sama programmi või samu programme,
nad sageli taaskasutada muutuja nimed, eriti levinud
nagu x, y, i, j, ja nii edasi.
>> Aga kui muutujad on sama nime, ulatus küsimused
võib saada veidi keerukam sõeluda.
Näiteks, kas sa tead Mis oleks välja printida
lõpus selle konkreetse programmi?
Võtke minut.
Peata video ja lugeda käesoleva programmi kaudu.
Näete ülaosas me on funktsiooni deklaratsioon
Funktsiooni nimetatakse juurdekasvu.
See funktsioon võtab ühe parameetrit, täisarv mida me nimetame x.
Ja see väljastab täisarv.
See tüübi tagastamise alguses.
>> Siis on meil peamine, paar rida kood on peamine, millest viimane
on print avalduse.
Ja pidage meeles, see on küsimus siin.
Mis on tegelikult saab olema trükitud lõpus see funktsioon?
Ja siis me tegelikult on määratlus juurdekasvu allpool.
>> Nii, et võta minut, sammult läbi kood, jälgida asju teha.
Kas sa tead, mis on trükitud lõpuks selle konkreetse programmi?
>> Hästi.
Loodetavasti olete võtnud paar sekundit proovida ja sõeluda selle ühe välja.
Teeme koos.
>> Nii et ma olen läbikriipsutatud juurdekasv on deklaratsiooni ülaosas on.
See oli omamoodi häiritud.
See ei ole oma muutuv.
See ei ole oma ulatuse.
See on lihtsalt funktsioon deklaratsiooni, nii eesmärkidel
püüda sõeluda välja, mida toimub selle programmi,
me võiksime sama hästi lihtsalt vältida.
>> Nüüd on meil selles asjas Põhjus, miks see probleem on keeruline
on, sest meil on kohalikud muutujad nii põhi- ja juurdekasvu, millest igaüks
nimetatakse x.
Ja muidugi tuum selles küsimuses on püüab suss, millised x saab muuta
ja kuidas see saada muutunud.
Nii et ma olen värviline igal juhul x, mis on kohaliku peamiste punane.
Ja ma olen värviline igakordne x, mis on kohaliku tasandi suurendamiseks sinine.
>> Märka, et kolmandas reas Peamiste, y võrdub juurdekasvu
x, et juurdekasvu ei ole läbinud peamine on x, või punane x.
Läheb edasi selle koopia.
Ja see on ainult kavatse tööd et koopia, sinine x.
Kui oled matemaatiliselt valmis, võite
on selle asemel mõelnud seda nii x sub m peamine ja x sub i jaoks juurdekasvu.
Aga see on sama mõte.
x sub m, või punase X Eelmises slaidi
on muutujad, mis on local-- on näiteks x pigem seda, et
on kohalikust peamine, ja x sub i, või sinine muutujad eelmise slaidi
on juhtumeid x, et on kohaliku tasandi suurendamiseks.
>> Niisiis, sa olid võimelised aru saada, mis Selle funktsiooni trükitud lõpus?
Ma olen Doug Lloyd, ja see on CS50.