Doug Lloyd: Kòm ou kòmanse travay ak fonksyon,
yon lòt bagay ki pral vin vrèman enpòtan yo konprann,
ki se konsèp nan sijè ki abòde varyab.
Se konsa, sijè ki abòde se yon karakteristik nan yon varyab
ki defini ki soti nan ki fonksyon ka varyab sa jwenn aksè.
>> Gen de Scopes prensipal nan C, varyab lokal yo ak varyab mondyal.
Koulye a, varyab lokal ka sèlman jwenn aksè nan fonksyon yo
nan kote yo ap kreye.
Yo pa kapab accessible pa tout lòt fonksyon ki egziste nan pwogram ou an,
sèlman fonksyon an nan ki li te kreye.
Varyab mondyal, sou mòn lan lòt men, ou kapab jwenn aksè
pa nenpòt fonksyon nan pwogram nan.
Ak rezon an pou sa a se paske yo pa ap kreye andedan
nan nenpòt ki fonksyon patikilye.
Nou deklare yo deyò nan tout nan fonksyon yo, ki
vle di ke chak fonksyon konnen ki kote li se ak kapab jwenn aksè ak manipile li.
>> Se konsa, lwen nan kou a ou te bèl pi ap travay sèlman
ak varyab lokal yo.
Isit la nan yon egzanp sou yon trè, trè senp fonksyon prensipal ak yon trè senp
plis fonksyon ke nou te ekri.
Nan ka sa a, x, ki Mwen te ki gen koulè pal vèt jis
mete aksan sou lokalite a oswa sijè ki abòde lan ki varyab,
se lokal yo fonksyon an trip.
prensipal pa ka al gade nan x nan tout.
Li pa konnen sa li ye.
Pa gen lòt fonksyon, an reyalite, si nou te gen fonksyon adisyonèl nan isit la,
te kapab, al gade nan x.
>> Menm jan tou, rezilta ki mwen te sifas ki gen koulè ble, se lokal sèlman nan prensipal la.
Se sèlman prensipal ki konnen sa ki rezilta a varyab se.
trip pa ka sèvi ak li.
>> Koulye a, jan mwen mansyone, varyab mondyal egziste.
Si ou deklare ke varyab deyò nan nenpòt ki fonksyon,
tout nan fonksyon yo nan la pwogram ka al gade nan li.
Se konsa, nan ka sa a mwen te make nan vèt yon deklarasyon varyab mondyal.
Nan ka sa a, nan ke yo te deklare varyab
yo rele mondyal, jis dwe trè klè sou li.
Li se nan kalite flote.
Apre sa, mwen bay li valè a 0,5050.
>> Ou ap remake ke nan prensipal ak nan trip, Mwen kapab, al gade nan mondyal la.
Lè an reyalite, si mwen ale nan pwogram nan jan sa endike, prensipal apèl premye trip,
miltipliye trip mondyal pa 3, ki kouche valè li nan 1.5-yon bagay,
1.51 oswa yon bagay tankou sa, ak Lè sa a, prensipal tou simagri soti valè a
de a sou.
Se konsa, prensipal pa pral enprime soti 0,5050 li, pral enprime soti fwa mondyal 3, 1.51.
Se konsa, ou te gen yo dwe atansyon lè w ap w ap travay ak varyab mondyal.
Pandan ke yo ap trè fleksib nan ke yo te kapab pase enfòmasyon
alantou pou ke chak fonksyon ka sèvi ak li,
li tou ka gen kèk konsekans danjere
si chanjman yon sèl fonksyon valè a nan yon varyab
anvan ou ap atann li yo dwe chanje.
>> Poukisa sa a distenksyon enpòtan?
Poukisa nou pran swen si wi ou non kèk varyab yo lokal yo ak lòt moun yo mondyal?
Oke, pou pati ki pi, varyab lokal nan C yo se sa ki yo rele pase bò valè
lè nou fè yon apèl fonksyon.
Ki sa sa vle di?
>> Oke, lè se yon varyab te pase pa valè, aple a, ki
se yon lòt fason pou li di fonksyon an ki ap resevwa varyab la ki
vin te pase nan kòm yon D ', li aktyèlman pa resevwa varyab sa tèt li.
Li resevwa pwòp li yo kopi li nan travay avèk yo.
Sa a se yon distenksyon vrèman enpòtan.
Nou jis te wè yon dezyèm Anons sa pibliye depi ke ak varyab mondyal,
si nou manipile mondyal la varyab nan yon sèl fonksyon, efè a
nan ki yon sèl fonksyon pote a bay chak fonksyon ak lòt.
>> Men, avèk varyab lokal yo, sa a, se pa vre.
Chak fonksyon lè li resevwa varyab kòm opinyon
resevwa kopi sa yo varyab, pa varyab yo tèt yo.
Se konsa, ki sa ki efè a bò nan sa?
Sa vle di ke varyab la nan moun kap rele a, fonksyon an ki
se fè apèl la fonksyon, se chanje sof si ou pase sou desizyon li.
>> Pou egzanp, nan kòd sa a foo se pa sa chanje nan tout.
Int foo egal 4, rele trip a foo, andedan nan trip,
nou ta espere ke foo ta dwe miltipliye pa 3 ak tounen,
men gen nan aktyèlman pa gen okenn efè.
>> Isit la menm si, yon diferans trè sibtil.
Sa a fè sa ki gen efè a nou vle.
Ou wè poukisa?
Nou ap prensip foo nan prensipal moman sa a.
>> Se konsa, int foo egal 4, foo egal trip foo, lè nou fè ki rele,
trip vin kopi pwòp li yo a foo, kopi pwòp li yo nan 4.
Li di retounen 4 fwa 3, oswa kèlkeswa sa varyab vin pase nan tan 3.
Lè sa a, nou bay retounen nan valè de trip foo ankò.
Se konsa, sa a aktyèlman ta recouvrir foo.
Sa a se wout la sèlman nan fè sa a ak varyab lokal yo.
Se konsa, kounye si nou ajoute yon lòt liy nan Kòd isit la
nan fen prensipal la enprime soti valè a nan foo,
li ta an reyalite enprime soti 12.
>> Sijè ki abòde Varyab se jeneralman pa twòp nan yon pwoblèm
si ou non tout nan ou varyab bagay diferan.
Men, li ka jwenn kalite anbarasan si menm non yo varyab
parèt nan plizyè fonksyon, ki pral rive yon anpil.
Si ou janm travay nan mond reyèl la kote
ou ap travay sou tèt ansanm pwogram ak moun ki nan ekip diferan
yo ap travay ansanm yo ekri menm bagay la tou pwogram oswa mete nan menm nan pwogram,
yo pral souvan jam itilize varyab non, yo menm patikilyèman komen
tankou x, y, mwen, J, ak sou sa.
>> Men, lè gen varyab Non an menm, pwoblèm sijè ki abòde
ka jwenn yon ti kras Delice analizan.
Pou egzanp, ou konnen sa ki ta ap enprime soti
nan fen an nan pwogram sa a an patikilye?
Pran yon minit.
Pran yon ti pòz videyo a ak li nan pwogram sa a.
Ou ka wè nan nou an tèt gen yon deklarasyon fonksyon
pou yon fonksyon rele enkreman.
Sa fonksyon pran yon sèl paramèt, yon nonb antye relatif ki nou rele x.
Epi, se sorties yon nonb antye relatif.
Sa a kalite a retounen nan kòmansman an.
>> Lè sa a, nou gen prensipal yo, yon koup nan liy nan kòd nan prensipal, dènye a nan yo ki
se yon deklarasyon ekri an lèt detache.
Epi sonje, sa a, se kesyon an isit la.
Ki sa ki aktyèlman pral yo dwe enprime nan fen a nan fonksyon sa a?
Lè sa a, nou gen la aktyèlman definisyon nan enkreman anba a.
>> Se konsa, pran yon minit, etap nan kòd la, trase bagay sa yo soti.
Ou konnen ki sa yo pral enprime nan nan fen pwogram sa a an patikilye?
>> Tout dwa.
Èspere ke, ou te pran yon kèk segond eseye ak analizan yon sèl sa a soti.
Se pou yo fè l 'ansanm.
>> Se konsa, mwen te janbe lòt soti nan enkreman deklarasyon nan tèt la a.
Li te kalite yon distraksyon.
Li pa varyab pwòp li yo.
Li pa gen sijè ki abòde pwòp li yo.
Se jis yon fonksyon deklarasyon, se konsa pou rezon
nan ap eseye analizan soti sa ki nan pase nan pwogram sa a,
nou ta ka kòm byen jis evite li.
>> Koulye a, nou gen nan ka sa a, nan Rezon ki fè pwoblèm sa a se difisil
se paske nou gen varyab lokal yo nan tou de prensipal la ak enkreman, chak nan ki
se rele x.
Ak nan kou neu a nan pwoblèm sa a se ap eseye su soti ki x vin chanje
ak kijan li jwenn chanje.
Se konsa, mwen te ki gen koulè pal chak egzanp nan x sa a, se lokal yo wouj prensipal la.
Apre sa, mwen te ki gen koulè pal chak egzanp nan x sa a, se lokal yo kantite ble.
>> Avi nan ki twazyèm liy a prensipal yo, y egal enkreman
x, ki se ke yo te pa enkreman pase x prensipal la, oswa x wouj la.
Li nan ap resevwa te pase yon kopi li.
Apre sa, li la sèlman pral travay avèk ki kopi li, x la ble.
Si ou se matematik enkline, ou ta ka
te olye te panse de sa a kòm x sub m pou prensipal ak x sub mwen pou kantite.
Men, li la lide a menm.
x sub m, oswa wouj la x nan nan glise anvan an,
yo varyab yo ki local-- se egzanp lan nan x olye ki
se nan lokal yo prensipal yo, e mwen x sub, oswa varyab ble nan glise anvan an,
yo ka yo nan x ki yo lokal yo kantite.
>> Se konsa, ou te kapab konnen sa ki sa a fonksyon enprime nan fen a?
Mwen se Doug Lloyd, e sa se CS50.