Doug LLOYD: Kā jūs sākat strādājot ar funkcijām,
Vēl viena lieta ir gatavojas kļūt tiešām svarīgi saprast,
kas ir jēdziens mainīgo jomu.
Tātad darbības joma ir raksturīgs ir mainīgs
kas nosaka, no kurām funkcijām ka mainīgais var piekļūt.
>> Ir divi galvenie jomu in C, vietējās mainīgie un globālie mainīgie.
Tagad, vietējie mainīgie var tikai piekļūt ietvaros funkcijām
kurā viņi radīja.
Tie nevar piekļūt ar katru otro funkcija, kas pastāv jūsu programmā,
tikai funkcija kurā tas tika izveidots.
Globālie mainīgie, no No otras puses, var piekļūt
jebkura funkcija programmā.
Un iemesls tam ir jo viņi nav radīti iekšā
no noteiktas funkcijas.
Mēs paziņojam viņus ārpus visas funkcijas, kas
nozīmē, ka katra funkcija zina, kur tas ir un var piekļūt un manipulēt ar to.
>> Līdz šim gaitā jūs esat diezgan daudz strādājusi vienīgi
ar vietējiem mainīgajiem.
Lūk, piemērs no ļoti, ļoti vienkāršs galvenā funkcija un ļoti vienkāršs
papildu funkcija, kas mēs esam rakstīts.
Šajā gadījumā, x, kas Esmu zaļā krāsā tikko
izcelt apvidus vai veidu, šī mainīgā,
ir vietējie funkcijai triple.
Galvenais nevar atsaukties uz x vispār.
Tā nezina, kas tas ir.
Neviena cita funkcija, patiesībā, ja mēs bija papildus funkcijas šeit,
varētu atsaukties uz x.
>> Līdzīgi rezultāti, kas es esmu zilā krāsā, ir vietējais tikai uz galveno.
Tikai galvenais zina, ko mainīgais rezultāts ir.
triple nevar izmantot.
>> Tagad, kā jau minēju, globālie mainīgie pastāv.
Ja jums paziņot, ka mainīgo ārpus jebkuras funkcijas,
visas funkcijas, Programma var atsaukties uz to.
Tātad šajā gadījumā es esmu izcelts green globāls mainīgais deklarācija.
Šajā gadījumā mainīgais tiek pasludināts
sauc par globālo, tikai būt ļoti skaidri par to.
Tas ir tipa pludiņu.
Un es piešķirt tai vērtību 0.5050.
>> Jūs pamanīsiet, ka galvenais un triple, es varu atsaukties uz pasaules.
Un patiesībā, ja man iet caur programmu kā norādīts, galvenie pirmie zvani triple,
triple vairojas globālie par 3, kas nosaka tās vērtību 1,5-kaut ko,
1.51 vai kaut kas tamlīdzīgs, un tad galvenais arī izdrukā vērtību
no pasaules.
Tātad galvenais nebūs izdrukāt 0.5050, to būs izdrukāt globālās reizes 3, 1.51.
Tātad jums ir jābūt uzmanīgiem, kad jūs strādājat ar globālo mainīgo.
Kamēr viņi ir ļoti elastīga var novirzīt informāciju
apmēram tā, ka katrs funkciju var izmantot,
tas arī var būt daži bīstamas sekas
ja viena funkcija izmaiņām vērtība ir mainīgs
Pirms jūs gaidīt to mainīt.
>> Kāpēc šī atšķirība ir svarīgi?
Kāpēc mēs rūpējamies, vai dažiem mainīgajiem ir vietējās un citi pasaules?
Nu, lielākā daļa, vietējās mainīgie C ir tas, ko sauc pagājis pēc vērtības
kad mēs veiktu funkciju zvanu.
Ko tas nozīmē?
>> Nu, kad mainīgais tiek nodots pēc vērtības, callee, kas
ir vēl viens veids, kā pateikt funkciju kas saņem mainīgo ka
izpaužas pieņemts kā ieguldījumu, tā faktiski nesaņem šo mainīgo pati.
Tā saņem savu tā kopiju strādāt.
Tas ir ļoti būtiska atšķirība.
Mēs tikko redzējām otrs atpakaļ ka ar globālo mainīgo,
ja mēs manipulēt pasaules mainīgs vienā funkcija, efekts
ar to, ka viens funkcija veic līdz jebkuru citu funkciju.
>> Bet ar vietējās mainīgie, tas nav taisnība.
Katra funkcija, kad to saņem mainīgos kā ievade
saņemt kopijas tiem mainīgajiem, ne paši mainīgie.
Tātad, kas ir blakusparādība, ka?
Tas nozīmē, ka mainīgais zvanītājs, funkcija, kas
ir padarot funkciju zvanu, ir nemainīga, ja vien jūs ignorēt to.
>> Piemēram, šajā kodu foo nav mainījies vispār.
Int foo vienāds ar 4, zvaniet triple no foo, iekšpusē triple,
mēs varētu sagaidīt, ka foo būtu jāreizina ar 3 un atpakaļ,
bet tur tiešām nav spēkā.
>> Te gan, ļoti smalks atšķirība.
Tas tomēr ir sekas mēs gribam.
Vai jūs redzat, kāpēc?
Mēs esam sevišķi svarīgi foo galvenajā šajā laikā.
>> Tātad int foo vienāds 4, foo vienāds triple foo, kad mēs šo aicinājumu,
triple saņem savu eksemplāru par foo, tās kopija 4.
Tajā teikts atgriezties 4 reizes 3, vai neatkarīgi mainīgs izpaužas nodots laikā 3.
Un tad mēs piešķirt atgriešanos vērtība triple uz foo vēlreiz.
Tātad tas patiesībā varētu pārrakstīt foo.
Tas ir vienīgais veids, kā to izdarīt tas ar vietējo mainīgo.
Tāpēc tagad, ja mēs pievienot citu līnija koda šeit
beigās galvenais uz izdrukāt vērtību foo,
tas faktiski izdrukāt 12.
>> Mainīgais joma parasti nav pārāk daudz problēmu
ja varat nosaukt visas jūsu mainīgie dažādas lietas.
Bet tā var iegūt veida šķebinošs ja paša mainīgā nosaukums
parādās vairākas funkcijas, kas notiks daudz.
Ja jūs kādreiz darīt strādāt reālā pasaulē, kur
jūs strādājat sadarbības programmām un cilvēki dažādās komandās
strādā kopā, lai rakstīt to pašu programma vai pats programmu kopums,
viņi bieži atkārtoti mainīgais nosaukumus, jo tie ir izplatīti
piemēram, x, y, I, J, un tā tālāk.
>> Bet, kad mainīgie ir tas pats nosaukums, darbības joma jautājumi
var iegūt mazliet sarežģītāk parsēt.
Piemēram, vai jūs zināt kas būtu izdrukāt
beigās šajā konkrētajā programmas?
Ņemt minūti.
Pauze video un lasīt izmantojot šo programmu.
Jūs varat redzēt augšējā mēs ir funkcija deklarāciju
par funkciju sauc pieaugums.
Šī funkcija aizņem vienu parametrs, vesels skaitlis, ko mēs saucam x.
Un tā rezultāti vesels skaitlis.
Tas ir atgriešanās tips sākumā.
>> Tad mums ir galvenais, pāris līnijas no koda galvenais, pēdējā no kurām
ir drukas paziņojums.
Un atcerieties, tas ir jautājums šeit.
Kas patiesībā būs iespiests beigās šo funkciju?
Un tad mums tiešām ir definīcija pieauguma zemāk.
>> Tātad ņem minūti, soli pa kodu, izsekot lietas.
Vai jūs zināt, kas tiks drukāts uz beigām šo konkrēto programmu?
>> Viss kārtībā.
Cerams, jūs esat veikusi dažas sekundes izmēģināt un apstrādāt šo vienu out.
Darīsim to kopā.
>> Tāpēc es esmu pārsvītrots pieaugums s deklarācija augšpusē tur.
Tā bija sava veida uzmanību.
Tas nav pati mainīgs.
Tas nav savas darbības jomu.
Tas ir tikai funkcija deklarācija, tāpēc vajadzībām
mēģina parsētu kas ir notiek šajā programmā,
mēs varētu arī vienkārši izvairīties no tā.
>> Tagad mēs ir šajā gadījumā Iemesls šī problēma ir grūts
ir tāpēc, ka mums ir vietējie mainīgie gan galvenais un pieauguma, katrs no kuriem
sauc x.
Un, protams būtība šajā jautājumā ir cenšoties Süss, kura x izpaužas mainījies
un kā tas get mainījusies.
Tāpēc es esmu krāsainu katru gadījumu x, kas ir vietējais galvenā sarkanā krāsā.
Un es esmu krāsainu katru gadījumu x, kas ir vietējais pieauguma zils.
>> Paziņojums šajā trešajā rindā Galveno, y vienāds pieaugumu
x, ka pieaugums nav to pagājis galvenais s x, vai sarkanā x.
Tas kļūst izturējis tā kopiju.
Un tas ir tikai dodas uz darbu ar ka tā kopiju, zils x.
Ja jūs esat matemātiski slīpi, jūs varētu
ir nevis domāja par to kā x sub m galveno un x sub I pieauguma.
Bet tas ir tas pats ideja.
x sub m, vai sarkanā x s iepriekšējā slide,
ir mainīgie, kas ir local-- ir instance x gan to, ka
ir vietēja uz galvenais, un x sub i, vai arī zils mainīgie iepriekšējo slaidu,
ir gadījumi, X, kas ir vietējie pieauguma.
>> Tātad, tad tu varētu izdomāt, ko Šī funkcija izdrukāts beigās?
Es esmu Doug Lloyd, un tas ir CS50.