DOUG LLOYD: Siz başlamaq kimi funksiyaları ilə iş, başqa bir şey olmaq niyyətindədir anlamaq, həqiqətən, vacibdir, olan dəyişən daxilində anlayışdır. Belə ki, daxilində bir dəyişən xarakterik ki funksiyaları müəyyən ki, dəyişən əldə edilə bilər. C iki əsas scopes var, yerli dəyişənlərin və qlobal dəyişənlər. İndi yerli dəyişənlərin yalnız funksiyaları çərçivəsində əldə edilə onlar yaradılmış edirik. Onlar hər ilə əldə edilə bilməz proqram mövcud funksiyası, yalnız funksiyası bu da yaradılmışdır. Qlobal dəyişənlər, Digər tərəfdən, əldə edilə bilər proqram hər hansı bir funksiyası ilə. Və səbəbi Onlar daxili yaradılmış deyilik, çünki hər hansı bir funksiyası. Biz xaricində onlara elan funksiyaları, olan hər funksiyası bilir o deməkdir ki, bu və daxil olmaq və manipulyasiya edə bilər. Bu günə qədər zamanı olduqca var qədər yalnız işləyirik yerli dəyişənlərin. Burada bir nümunə çox, çox var sadə əsas funksiyası və bir çox sadə biz yazdıq əlavə funksiyası. Bu halda, x hansı Mən yalnız yaşıl rəngli etdik mövqeyində qeyd etmək və ya ki, dəyişən daxilində, üç funksiyası yerli. Əsas bütün x istinad edə bilməz. Bu nə bilmir. No digər funksiyası, əslində, biz əgər burada əlavə funksiyaları var idi x müraciət edə bilər. Eynilə, mən etdiyiniz nəticələrini mavi rəngli, yalnız əsas yerli edir. Yalnız əsas nə bilir dəyişən nəticəsidir. üç istifadə edə bilməz. İndi qeyd olunduğu kimi, qlobal dəyişənlər mövcuddur. Ki, dəyişən elan əgər hər hansı bir funksiyası kənarda, funksiyaları bütün proqram üçün müraciət edə bilər. Belə ki, bu halda mən qeyd etdik qlobal dəyişən bəyannamə yaşıl. Bu halda, dəyişən varlıq elan yalnız qlobal adlanır bu barədə çox aydın. Bu tipli float edir. Və mən dəyər 0,5050 təyin. Siz əsas və görəcəksiniz üç, mən qlobal müraciət edə edirəm. Və əslində, mən proqramı vasitəsilə getmək əgər əsas ilk zənglər üç göstərildiyi kimi, 3 qlobal üç multiplies olan 1.5 şey onun dəyəri müəyyən edir, 1.51 ya kimi bir şey, və sonra əsas da dəyər çap qlobal. 0,5050 çap deyil, belə ki, əsas, onu , 1,51 qlobal dəfə 3 çap edəcək. Belə ki, zaman ehtiyatlı olmaq var qlobal dəyişənlər çalışırıq. Onlar çox çevik etdiyiniz isə məlumat keçmək qadir olan ətrafında ki, hər funksiyası istifadə edə bilərsiniz, bu da bəzi ola bilər təhlükəli nəticələri bir funksiyası dəyişikliklər əgər dəyişən dəyəri gözləmək əvvəl dəyişdirilə. Niyə bu fərq Fərq etmir? Niyə biz qayğı bəzi dəyişənlər olub yerli və digər qlobal var? Yaxşı, çox hissəsi üçün, yerli dəyişənlərin C dəyəri qəbul deyirlər nə var biz bir funksiyası zəng zaman. Bunun mənası nədir? Yaxşı, bir dəyişən keçdi zaman dəyəri, callee tərəfindən hansı funksiyası deyərək bir yoldur ki, dəyişən qəbul edir ki, bir giriş kimi qəbul olur, bu, həqiqətən ki, dəyişən özü qəbul etmir. O, öz qəbul bu surəti ilə işləmək üçün. Bu həqiqətən əhəmiyyətli bir fərq var. Biz yalnız bir ikinci əvvəl gördüm qlobal dəyişənlər ilə, qlobal manipulyasiya əgər bir funksiyası dəyişən təsiri ki, bir funksiyası daşıyır hər bir digər funksiyası vasitəsilə. Lakin yerli dəyişənlərin, ki, doğru deyil. Hər bir funksiyası zaman giriş kimi dəyişənlərin qəbul bu dəyişənlərin surətlərini almaq, Biz dəyişənlərin özləri. Belə ki, yan təsiri nədir? O deməkdir ki dəyişən zəng funksiyası ki, funksiyası zəng edərək deyil, dəyişməz siz yalnış halda. Məsələn, bu kodu foo bütün dəyişdirilə deyil. Int foo 4 bərabərdir, üç zəng foo, üç daxilində, ki, foo ki gözləmək olardı 3 vurulur və qaytarılır, lakin faktiki olaraq heç bir təsiri var. Burada baxmayaraq ki, bir çox incə fərq. Bu istədiyiniz effekti yoxdur. Niyə görürsünüz? Biz əsas bu dəfə foo əsas edirik. Belə ki, int foo 4, foo bərabərdir üç foo, biz zəng zaman, üç öz surətini alır foo, 4 öz surəti. Bu nə 4 dəfə 3, və ya geri deyir dəyişən dəfə 3 keçdi olur. Və sonra biz geri təyin üç dəyəri yenidən foo. Belə ki, bu, həqiqətən, foo üzerine olardı. Bunu etmək üçün yeganə yoldur yerli dəyişən ilə bu. Belə ki, indi biz bir əlavə burada kodu line Əsas sonuna at , foo dəyəri çap əslində 12 çap olardı. Dəyişən daxilində ümumiyyətlə bir problem çox deyil Siz bütün adını əgər sizin dəyişənlərin fərqli şeylər. Amma bu murdar cür əldə edə bilərsiniz Eyni dəyişən adı çox funksiyaları görünür, olan bir çox olacaq. Əgər iş deyilsə real dünya harada Siz əməkdaşlıq üzərində işləyirik müxtəlif qrupları proqramları və insanlar Eyni yazmaq üçün birlikdə çalışırıq proqram və ya proqramların eyni, Onlar tez-tez dəyişən təkrar lazımdır adları, xüsusilə ümumi olanları Belə x, y, I, J, və s. Amma dəyişənlər var eyni adı, əhatə dairəsi məsələlər bir az trickier analiz əldə edə bilərsiniz. Məsələn, bilirsiniz nə çap olunacaq bu Proqramın sonunda? Bir dəqiqə edin. Video Pause və oxumaq Bu proqram vasitəsilə. Siz üst biz görə bilərsiniz bir funksiyası bəyannamə var artım adlı funksiyası üçün. Ki, funksiyası bir edir parametri, biz x zəng tam. Və tam nəticələr. Ki, başında qaytarılması növü var. Sonra biz xətləri əsas, bir neçə var əsas kodu, olan son çap bəyanatdır. Və burada sual, xatırlayıram. Nə həqiqətən olacaq Bu funksiya sonunda çap? Və sonra biz həqiqətən var Aşağıdakı artım müəyyən. Belə addım, bir dəqiqə indeksi, şeyi iz. Siz çap olunacaq nə bilirik bu Proqramın sonunda? Oldu. Ümid edirəm ki, bir neçə saniyə qəbul etdik cəhd və bu bir analiz üçün. Birlikdə bunu edək. Belə ki, artım həyata keçərək etdik orada üst Bəyannamə. Bu yayındırma idi. O, öz dəyişən deyil. O, öz əhatə dairəsini yoxdur. Bu, sadəcə bir funksiyası var bəyannamə, belə ki, məqsədlər üçün bir ne analiz çalışır Bu proqram baş, biz də yalnız qarşısını almaq bilər. İndi biz bu halda var, Bu problem çətin səbəbi biz yerli dəyişənlər var, çünki əsas və artım, həm də hər hansı adlı x edir. Və əlbəttə, bu məsələnin mahiyyəti deyil x dəyişdi olur süss üçün çalışır və necə dəyişdi almaq deyil. Belə ki, hər instansiya rəngli etdik x əsas qırmızı yerli ki. Və mən hər instansiya rəngli etdik x mavi arttırmayı yerli var. Üçüncü xətt Notice əsas, y artım bərabərdir x ki, artım olan deyil keçdiyini əsas x, və ya qırmızı x. Bu, bir kopyasını qəbul əldə edir. Və yalnız işləmək olacaq bu ki surəti, mavi x. Siz riyazi edirsinizsə maili, güc əvəzinə x alt kimi bu fikir artım üçün əsas və alt x i üçün m. Amma eyni fikirdir. x sub m, ya x qırmızı Əvvəlki slayd, local-- var dəyişənlər var ki, daha çox x instansiya edir əsas yerli və x sub i, və ya Əvvəlki slide mavi dəyişənlər, x hallarda var ki, arttırmayı yerli. Belə ki, anlamaq mümkün idi nə sonunda çap, bu funksiya? Mən Doug Lloyd oldum və bu CS50 edir.