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.