1 00:00:06,650 --> 00:00:09,390 [Powered by Google Translate] JOE MCCORMICK: Taigi, dabar mes ketiname kalbėti apie kintamuosius. 2 00:00:09,390 --> 00:00:13,270 Kintamieji kompiuterių mokslo būdas saugoti vertę. 3 00:00:13,270 --> 00:00:14,980 Dabar, ką ir kaip mes saugome, kad 4 00:00:14,980 --> 00:00:16,210 vertė yra ne per daug svarbūs. 5 00:00:16,210 --> 00:00:19,780 Mes galime turėti vertę, kuri yra žodis, kad galėtų 6 00:00:19,780 --> 00:00:21,170 turi būti saugomas kaip eilutė. 7 00:00:21,170 --> 00:00:23,160 Arba mes galime turėti kažką, kad yra požymių, 8 00:00:23,160 --> 00:00:24,110 kaip laiške. 9 00:00:24,110 --> 00:00:26,420 Ir kad būtų saugomi kaip char. 10 00:00:26,420 --> 00:00:29,660 Galėtume turėti numerį, kaip vienas ar 12, kad būtų 11 00:00:29,660 --> 00:00:32,310 saugomi kaip sveikasis skaičius arba int. 12 00:00:32,310 --> 00:00:35,940 Tada mes turime skirtingus dalykus, pavyzdžiui, plūdės, kuriose galima patalpinti 13 00:00:35,940 --> 00:00:41,700 dalykų, pavyzdžiui, 1,01 arba 111,13. 14 00:00:41,700 --> 00:00:43,530 Šios vertybės yra visada ragino permainingas. 15 00:00:43,530 --> 00:00:46,490 Reiškia, kad jei mes saugomi numeris vienas sveikasis skaičius 16 00:00:46,490 --> 00:00:49,490 viršuje programą vėliau, mes galime pakeisti, kad numeris 17 00:00:49,490 --> 00:00:51,460 trijų ar septynių. 18 00:00:51,460 --> 00:00:53,890 Dabar, vietos kintamasis yra tai, ką jūs paprastai susiduria su 19 00:00:53,890 --> 00:00:55,250 , kai vykdant tam tikrą funkciją. 20 00:00:55,250 --> 00:00:57,260 Tarkime, jūs per savo pagrindinę funkciją. 21 00:00:57,260 --> 00:00:59,910 Ir norite sukurti kintamasis vadinamas num. 22 00:00:59,910 --> 00:01:01,240 Ir mes saugoti sveikasis skaičius. 23 00:01:01,240 --> 00:01:04,680 Taigi, mes galime pasakyti kažką panašaus į int num = 3. 24 00:01:04,680 --> 00:01:05,319 Dabar ten jūs einate. 25 00:01:05,319 --> 00:01:06,830 Turite vietos kintamąjį. 26 00:01:06,830 --> 00:01:09,670 Dabar šis kintamasis gali būti pakeistas vėliau pagrindinis 27 00:01:09,670 --> 00:01:13,700 funkcija, sakydamas kažką panašaus skaičius = 6 arba skaicius = 7. 28 00:01:13,700 --> 00:01:15,940 Bet jūsų kintamasis įstrigo per 29 00:01:15,940 --> 00:01:18,320 apimtis šią funkciją. 30 00:01:18,320 --> 00:01:21,690 Ir taikymo sritis paprastai prasideda garbanotas petnešomis ne 31 00:01:21,690 --> 00:01:23,990 pradžios pagrindinis ir baigiasi garbanotas petnešomis, kad 32 00:01:23,990 --> 00:01:26,230 uždaroma pagrindinę funkciją. 33 00:01:26,230 --> 00:01:29,610 Ir tai vietos kintamąjį dabar pakimba per šią sritį. 34 00:01:29,610 --> 00:01:32,200 Todėl ji nebegali būti atvertas kitos funkcijos, 35 00:01:32,200 --> 00:01:33,950 už pagrindinės funkcijos. 36 00:01:33,950 --> 00:01:36,230 Ir kai pagrindinė funkcija baigia savo vykdymą ir 37 00:01:36,230 --> 00:01:40,460 grąžą, tai vietos kintamąjį vadinamas skaičius dingo. 38 00:01:40,460 --> 00:01:42,760 Taigi Priešingai nei lokalūs kintamieji, mes turime ką nors 39 00:01:42,760 --> 00:01:43,970 "visuotiniai kintamieji. 40 00:01:43,970 --> 00:01:46,890 Dabar, pasaulio kintamasis paskelbtas viršuje 41 00:01:46,890 --> 00:01:49,860 programa ir gali būti prieinama bet kurioje programoje. 42 00:01:49,860 --> 00:01:51,805 Tarkime, paskelbė pasaulinį kintamąjį viršuje 43 00:01:51,805 --> 00:01:53,200 jūsų programa, vadinama testas. 44 00:01:53,200 --> 00:01:54,990 Dabar šis kintamasis gali būti atvertas 45 00:01:54,990 --> 00:01:56,000 bet kurioje programoje. 46 00:01:56,000 --> 00:01:58,230 Jūs galite prieiti prie jį savo pagrindinę funkciją ar funkcija 47 00:01:58,230 --> 00:01:59,300 žemiau, kad. 48 00:01:59,300 --> 00:02:02,210 Bet jei jūs kada nors pabandyti sukurti kintamąjį, vienoje iš 49 00:02:02,210 --> 00:02:04,170 šių funkcijų, su tokiu pačiu pavadinimu kaip 50 00:02:04,170 --> 00:02:05,880 testas, ten konfliktas. 51 00:02:05,880 --> 00:02:07,720 Nes jūs nežinote, iš jos kintama norite naudoti. 52 00:02:07,720 --> 00:02:09,039 Ar norite naudoti bendrą bandymą, 53 00:02:09,039 --> 00:02:10,910 viršuje programoje deklaruotas? 54 00:02:10,910 --> 00:02:12,495 Ar jūs norite naudoti vietos kintamąjį bandymas, kad 55 00:02:12,495 --> 00:02:14,920 bandote sukurti per šią funkciją? 56 00:02:14,920 --> 00:02:16,700 Dabar, tai yra viena iš priežasčių, kodėl mes nenori 57 00:02:16,700 --> 00:02:18,960 tiesiog naudoti globalių kintamųjų laisvai. 58 00:02:18,960 --> 00:02:21,570 Yra kažkas vadinama cluttering pavadinimas erdvė. 59 00:02:21,570 --> 00:02:23,940 Net jei jūs tai nereiškia, galite netyčia sukurti 60 00:02:23,940 --> 00:02:26,270 vietos kintamąjį, o vėliau į programą, su tuo pačiu 61 00:02:26,270 --> 00:02:28,140 vardas kaip pasaulinį kintamąjį. 62 00:02:28,140 --> 00:02:30,130 Ir tai nekelia didžiulė problema, kai dirbate 63 00:02:30,130 --> 00:02:33,120 maža 10, 20, 30-line programos. 64 00:02:33,120 --> 00:02:35,520 Kai jūs turite tūkstančių eilučių kodo, jums nebus 65 00:02:35,520 --> 00:02:38,740 prisiminti, ką turite saugomi pasaulinį kintamąjį. 66 00:02:38,740 --> 00:02:41,000 Taigi vienas dalykas, apsvarstyti, naudojant vietos ir globalinės 67 00:02:41,000 --> 00:02:43,570 kintamuosius galvoti apie jų taikymo sritį. 68 00:02:43,570 --> 00:02:47,270 Dabar, apimtis tai, kur šie pokyčiai gali būti naudojamas 69 00:02:47,270 --> 00:02:48,500 programa. 70 00:02:48,500 --> 00:02:51,080 Taigi pasaulio kintamasis yra tai, kas vadinama pasaulio taikymo sritį, 71 00:02:51,080 --> 00:02:53,820 tai reiškia, kad jis gali būti naudojamas bet kurioje programoje. 72 00:02:53,820 --> 00:02:56,860 Kai jūs inicijuoti tas kintamo dydžio, jis gali būti naudojamas 73 00:02:56,860 --> 00:03:00,530 bet kokia funkcija, ar tai būtų pagrindinė funkcija arba 74 00:03:00,530 --> 00:03:03,780 funkcijos 10 funkcijų žemyn, vadinama foo10. 75 00:03:03,780 --> 00:03:05,160 Nesvarbu, kur jūs naudojate jį. 76 00:03:05,160 --> 00:03:07,490 Bet vietos kintamąjį turi konkrečią taikymo sritį. 77 00:03:07,490 --> 00:03:09,800 Ir apimtis nustatoma pagal tos vietos kintamąjį 78 00:03:09,800 --> 00:03:11,030 kur jis yra inicializuoti. 79 00:03:11,030 --> 00:03:13,680 Dabar, taikymo sritis paprastai nustatomas remiantis atidarymo 80 00:03:13,680 --> 00:03:16,540 petnešomis funkcija, kintamasis paskelbtas, kol 81 00:03:16,540 --> 00:03:18,300 uždarymo petnešomis šią funkciją. 82 00:03:18,300 --> 00:03:19,730 Tarkime, esate pagrindinės funkcijos. 83 00:03:19,730 --> 00:03:21,410 Ir jūs sukurti kintamąjį. 84 00:03:21,410 --> 00:03:23,110 Bet dabar, per šios pagrindinės funkcijos, mes vadiname kitą 85 00:03:23,110 --> 00:03:24,640 veikti FOO. 86 00:03:24,640 --> 00:03:27,070 Funkciniam foo, mes negali skambinti kintamasis mes tiesiog 87 00:03:27,070 --> 00:03:29,940 sukurta pagrindinė funkcija, nes jis nėra komplekte. 88 00:03:29,940 --> 00:03:33,410 Kad kintamasis yra tik pagrindinės funkcijos, taikymo sritį. 89 00:03:33,410 --> 00:03:36,540 Taigi, mes galime jį naudoti toliau, per pagrindinę funkciją, bet 90 00:03:36,540 --> 00:03:40,650 ne per funkcija, kuri yra vadinama pagrindinė funkcija. 91 00:03:40,650 --> 00:03:43,390 Taigi, kaip kamino ir krūvos visuotiniai kintamieji yra 92 00:03:43,390 --> 00:03:45,580 saugomi tam tikroje atminties. 93 00:03:45,580 --> 00:03:47,665 Dabar, tai atminties dalis priklauso nuo sistemos, kad 94 00:03:47,665 --> 00:03:48,490 jūs naudojate. 95 00:03:48,490 --> 00:03:50,840 Visuotiniai kintamieji, turi du atskirus taškus, kad jie 96 00:03:50,840 --> 00:03:54,570 saugomi, inicijuoti globalių kintamųjų, pavyzdžiui, jei 97 00:03:54,570 --> 00:03:58,130 jums pareiškė, int testą = 5, prie jūsų programos viršuje. 98 00:03:58,130 --> 00:04:01,010 , O kitas plotas yra prie unitialized globalių kintamųjų, 99 00:04:01,010 --> 00:04:03,190 jei ką tik sakė, int testas, jūsų programos viršuje ir 100 00:04:03,190 --> 00:04:05,040 ketina nustatyti bandymo kintamuosius 101 00:04:05,040 --> 00:04:07,626 vėliau programoje. 102 00:04:07,626 --> 00:04:10,140 Taigi, dabar aš ruošiuosi kalbėti apie vadinamąjį # define 103 00:04:10,140 --> 00:04:13,380 , kuri yra būdas suteikti simbolinę vardas konstanta. 104 00:04:13,380 --> 00:04:17,420 Ir čia mes turime pavyzdį C programą, kuri apskaičiuoja 105 00:04:17,420 --> 00:04:19,470 apskritimo plotas. 106 00:04:19,470 --> 00:04:21,690 Ir programos viršuje, mes padarysime kažką, kad sako 107 00:04:21,690 --> 00:04:25,830 # Define pi 3,14159. 108 00:04:25,830 --> 00:04:29,330 # Define nėra techniškai sukurti pasaulinį kintamąjį. 109 00:04:29,330 --> 00:04:31,590 Atvirkščiai, jis pasakys, kompiliatorių, procesorių 110 00:04:31,590 --> 00:04:34,350 rasti ir pakeisti visus pi atvejus 111 00:04:34,350 --> 00:04:37,540 3,14159 prieš sudarant 112 00:04:37,540 --> 00:04:39,830 Nepaisant to, jis tampa naudinga technika, pagal kurią 113 00:04:39,830 --> 00:04:41,510 konstantos, naudoti visoje programoje. 114 00:04:41,510 --> 00:04:44,540 Dabar žiūri vietovės funkcija, ji imasi plūdės 115 00:04:44,540 --> 00:04:48,150 rad ir tiesiog grąžina apskritimo plotas su 116 00:04:48,150 --> 00:04:52,920 spindulys arba pi r kvadratu, arba pi kartų rad kartų rad. 117 00:04:52,920 --> 00:04:56,040 Ir tai, kur # define vaidina svarbų vaidmenį. 118 00:04:56,040 --> 00:04:59,270 Nes kompiliatorių bus iš esmės pakeisti, kad pi 119 00:04:59,270 --> 00:05:02,780 skaičius simbolis su 3,14159. 120 00:05:02,780 --> 00:05:05,560 Ir todėl mes negalime parašyti, kad vėl ir vėl. 121 00:05:05,560 --> 00:05:08,900 , O vėliau, jei mes nuspręsime naudoti daugiau skaitmenys pi, galime 122 00:05:08,900 --> 00:05:12,800 pasakyti 3.1415926 tiesiog galėtume pridurti, kad į viršų 123 00:05:12,800 --> 00:05:14,330 programa ir neturės jį pakeisti, 124 00:05:14,330 --> 00:05:16,160 vėliau programoje. 125 00:05:16,160 --> 00:05:18,240 Tai gerai panaudoti # define. 126 00:05:18,240 --> 00:05:20,520 Mes nenorime laikyti Pi kaip pasaulinį kintamąjį, nes 127 00:05:20,520 --> 00:05:21,780 vėliau galėtų pakeisti programoje. 128 00:05:21,780 --> 00:05:23,430 Ir mes žinome, Pi nekeičia. 129 00:05:23,430 --> 00:05:25,650 Tai pastovus. 130 00:05:25,650 --> 00:05:28,120 Taigi, šis apsiaustas iki mūsų tema globalių kintamųjų. 131 00:05:28,120 --> 00:05:29,930 Taigi, šiandien mes kalbėjome apie skirtumo tarp vietos ir 132 00:05:29,930 --> 00:05:32,490 visuotiniai kintamieji, kada juos naudoti, atsižvelgiant į jų 133 00:05:32,490 --> 00:05:36,660 taikymo sritį, ir kodėl gi ne naudoti globalių kintamųjų bus 134 00:05:36,660 --> 00:05:39,360 dėl cluttering pavadinimą erdvės. 135 00:05:39,360 --> 00:05:40,270 Aš esu Joe McCormick. 136 00:05:40,270 --> 00:05:42,290 Ir tai yra CS50.