1 00:00:06,650 --> 00:00:09,390 [Powered by Google Translate] Joe MCCORMICK: Kaya ngayon kami ay upang makipag-usap tungkol sa mga variable. 2 00:00:09,390 --> 00:00:13,270 Variable sa computer science ay isang paraan upang mag-imbak ng isang halaga. 3 00:00:13,270 --> 00:00:14,980 Ngayon, kung ano ang at kung paano imbak ng namin na 4 00:00:14,980 --> 00:00:16,210 halaga ay hindi masyadong mahalaga. 5 00:00:16,210 --> 00:00:19,780 Maaari naming magkaroon ng isang halaga na isang salita, na maaari 6 00:00:19,780 --> 00:00:21,170 naka-imbak bilang isang string. 7 00:00:21,170 --> 00:00:23,160 O maaari naming magkaroon ng isang bagay na ay isang character, 8 00:00:23,160 --> 00:00:24,110 tulad ng sulat ng. 9 00:00:24,110 --> 00:00:26,420 At na naka-imbak bilang isang pansamantalang trabaho. 10 00:00:26,420 --> 00:00:29,660 Namin ay maaaring magkaroon ng isang numero, tulad ng isa o 12, na magiging 11 00:00:29,660 --> 00:00:32,310 naka-imbak bilang isang integer o isang int. 12 00:00:32,310 --> 00:00:35,940 Pagkatapos, mayroon kaming iba't ibang mga bagay tulad ng Float, na maaaring iimbak 13 00:00:35,940 --> 00:00:41,700 mga bagay tulad ng 1.01 o 111.13. 14 00:00:41,700 --> 00:00:43,530 Ang mga halaga na ito ay palaging tinatawag na nababago. 15 00:00:43,530 --> 00:00:46,490 Na nangangahulugan na kung naka-imbak namin ang bilang isa sa isang integer sa 16 00:00:46,490 --> 00:00:49,490 ang tuktok ng isang programa sa paglaon, maaari naming baguhin ang numerong iyon sa 17 00:00:49,490 --> 00:00:51,460 tatlo o pitong. 18 00:00:51,460 --> 00:00:53,890 Ngayon, ang isang lokal na variable ay kung ano ang makikita mo karaniwang nakatagpo, 19 00:00:53,890 --> 00:00:55,250 kapag execute ng isang function. 20 00:00:55,250 --> 00:00:57,260 Kaya sabihin nating ikaw ay sa loob ng iyong pangunahing function na. 21 00:00:57,260 --> 00:00:59,910 At nais mong lumikha ng isang variable na tinatawag na num. 22 00:00:59,910 --> 00:01:01,240 At magpapadala kami mag-imbak ng isang integer sa loob nito. 23 00:01:01,240 --> 00:01:04,680 Kaya kami maaaring sabihin na ang isang bagay tulad ng int num = 3. 24 00:01:04,680 --> 00:01:05,319 Ngayon, doon pumunta ka. 25 00:01:05,319 --> 00:01:06,830 Mayroon kang isang lokal na variable. 26 00:01:06,830 --> 00:01:09,670 Ngayon, ang variable na ito ay maaaring baguhin sa pangunahing 27 00:01:09,670 --> 00:01:13,700 function, sa pamamagitan ng sinasabi ng isang bagay tulad ng num = 6 o num = 7. 28 00:01:13,700 --> 00:01:15,940 Ngunit ang iyong mga variable ay natigil sa loob ng 29 00:01:15,940 --> 00:01:18,320 saklaw ng na function na. 30 00:01:18,320 --> 00:01:21,690 At saklaw karaniwang nagsisimula sa ang kulot suhay sa 31 00:01:21,690 --> 00:01:23,990 simula ng pangunahing at nagtatapos sa kulot suhay na 32 00:01:23,990 --> 00:01:26,230 isinasara ang pangunahing function na. 33 00:01:26,230 --> 00:01:29,610 At ngayon ang lokal na variable na ito ay natigil sa loob ng saklaw. 34 00:01:29,610 --> 00:01:32,200 Kaya ito ay hindi na ma-access sa ibang andar, 35 00:01:32,200 --> 00:01:33,950 sa labas ng pangunahing function na. 36 00:01:33,950 --> 00:01:36,230 At sa sandaling ang pangunahing function na tatapusin nito pagpapatupad at 37 00:01:36,230 --> 00:01:40,460 babalik, ito lokal na variable na tinatawag na num ay nawala. 38 00:01:40,460 --> 00:01:42,760 Kaya sa kaibahan sa mga lokal na variable, mayroon kaming isang bagay 39 00:01:42,760 --> 00:01:43,970 tinatawag na pangkalahatang variable. 40 00:01:43,970 --> 00:01:46,890 Ngayon, isang pandaigdigang variable ay ipinahayag sa itaas ng 41 00:01:46,890 --> 00:01:49,860 programa at maaaring ma-access kahit saan sa programa. 42 00:01:49,860 --> 00:01:51,805 Kaya sabihin nating ipinahayag mo ang isang pandaigdigang variable sa tuktok ng 43 00:01:51,805 --> 00:01:53,200 iyong programa, na tinatawag na pagsubok. 44 00:01:53,200 --> 00:01:54,990 Ngayon, ang variable na ito ay maaaring ma-access 45 00:01:54,990 --> 00:01:56,000 saanman sa programa. 46 00:01:56,000 --> 00:01:58,230 Maaari mong ma-access ang mga ito sa iyong pangunahing function na o ng isang function 47 00:01:58,230 --> 00:01:59,300 ibaba na. 48 00:01:59,300 --> 00:02:02,210 Ngunit kung sakaling subukang upang lumikha ng isang lokal na variable sa isa sa 49 00:02:02,210 --> 00:02:04,170 mga function, na may parehong pangalan sa 50 00:02:04,170 --> 00:02:05,880 test, may isang kontrahan. 51 00:02:05,880 --> 00:02:07,720 Dahil hindi mo alam kung saan variable na nais mong gamitin. 52 00:02:07,720 --> 00:02:09,039 Gusto mo bang gamitin ang global test, 53 00:02:09,039 --> 00:02:10,910 ipinahayag sa tuktok na programa? 54 00:02:10,910 --> 00:02:12,495 O gusto mong gamitin ang mga lokal na variable pagsubok na 55 00:02:12,495 --> 00:02:14,920 na sinusubukan upang lumikha sa loob ng function na ito? 56 00:02:14,920 --> 00:02:16,700 Ngayon, ito ay isa sa mga dahilan kung bakit hindi namin nais na 57 00:02:16,700 --> 00:02:18,960 lamang gumamit ng mga pangkalahatang variable malayang. 58 00:02:18,960 --> 00:02:21,570 May isang bagay na tinatawag cluttering ang espasyo ng pangalan. 59 00:02:21,570 --> 00:02:23,940 Kahit na hindi mo bang sabihin na, maaaring hindi mo sinasadyang lumikha ng isang 60 00:02:23,940 --> 00:02:26,270 lokal na variable, sa paglaon sa programa, na may parehong 61 00:02:26,270 --> 00:02:28,140 pangalan bilang ang global variable. 62 00:02:28,140 --> 00:02:30,130 At ito ay hindi magpose isang malaking problema kapag ikaw ay nagtatrabaho sa 63 00:02:30,130 --> 00:02:33,120 maliit na 10, 20, 30-line programa. 64 00:02:33,120 --> 00:02:35,520 Sa sandaling mayroon ka ng hanggang sa libu-libong ng mga linya ng code, hindi mo 65 00:02:35,520 --> 00:02:38,740 matandaan eksakto kung ano ang naka-imbak para sa global variable. 66 00:02:38,740 --> 00:02:41,000 Kaya isang bagay upang isaalang-alang, kapag gumagamit ng mga lokal at global na 67 00:02:41,000 --> 00:02:43,570 variable ay mag-isip tungkol sa kanilang mga saklaw. 68 00:02:43,570 --> 00:02:47,270 Ngayon, ang saklaw ay tumutukoy kung saan ang mga variable na ito ay maaaring gamitin sa 69 00:02:47,270 --> 00:02:48,500 sa programa. 70 00:02:48,500 --> 00:02:51,080 Kaya ang isang global variable ay may kung ano ang tinatawag na pandaigdigang saklaw, 71 00:02:51,080 --> 00:02:53,820 na nangangahulugan na maaari itong gamitin kahit saan sa programa. 72 00:02:53,820 --> 00:02:56,860 Kapag initialize mo na variable, maaari itong gamitin sa 73 00:02:56,860 --> 00:03:00,530 function na anumang, maging ito ay ang pangunahing function o 74 00:03:00,530 --> 00:03:03,780 function ng function na 10 pababa, na tinatawag na foo10. 75 00:03:03,780 --> 00:03:05,160 Hindi mahalaga kung saan mo ito gamitin. 76 00:03:05,160 --> 00:03:07,490 Ngunit ang isang lokal na variable ay may tukoy na saklaw. 77 00:03:07,490 --> 00:03:09,800 At ang saklaw ng na lokal na variable ay natutukoy sa pamamagitan ng 78 00:03:09,800 --> 00:03:11,030 kung saan ito ay nasimulan. 79 00:03:11,030 --> 00:03:13,680 Ngayon, ang saklaw ay karaniwang tinutukoy sa pamamagitan ng ang pagbubukas 80 00:03:13,680 --> 00:03:16,540 suhay ng pag-andar na variable ay ipinahayag sa, hanggang 81 00:03:16,540 --> 00:03:18,300 ang pagsasara ng suhay ng na function na. 82 00:03:18,300 --> 00:03:19,730 Kaya sabihin nating ikaw ay sa pangunahing function na. 83 00:03:19,730 --> 00:03:21,410 At lumikha ka ng isang variable. 84 00:03:21,410 --> 00:03:23,110 Ngunit ngayon, sa loob ng pangunahing function na, tinatawag naming isa pang 85 00:03:23,110 --> 00:03:24,640 gumana foo. 86 00:03:24,640 --> 00:03:27,070 Sa pag-andar foo, hindi namin maaaring tumawag sa variable lang namin 87 00:03:27,070 --> 00:03:29,940 nilikha sa pangunahing function na dahil hindi ito sa saklaw. 88 00:03:29,940 --> 00:03:33,410 Na variable ay lamang sa saklaw sa loob ng pangunahing function na. 89 00:03:33,410 --> 00:03:36,540 Kaya namin maaaring gamitin ito sa karagdagang sa, sa loob ng pangunahing function na, ngunit 90 00:03:36,540 --> 00:03:40,650 hindi sa loob ng isang function na ay tinatawag na mula sa pangunahing function na. 91 00:03:40,650 --> 00:03:43,390 Kaya tulad ng stack at ang magbunton, pangkalahatang variable 92 00:03:43,390 --> 00:03:45,580 naka-imbak sa isang tiyak na bahagi ng memorya. 93 00:03:45,580 --> 00:03:47,665 Ngayon, ang bahagi na ito ng memory ay nakasalalay sa system na 94 00:03:47,665 --> 00:03:48,490 na ginagamit mo. 95 00:03:48,490 --> 00:03:50,840 Ang mga pangkalahatang variable ay may dalawang magkahiwalay na mga spot na sila 96 00:03:50,840 --> 00:03:54,570 naka-imbak, isa para sa mga nasimulan pangkalahatang variable, tulad ng kung 97 00:03:54,570 --> 00:03:58,130 mo ay ipinahayag int test = 5, sa tuktok ng iyong programa. 98 00:03:58,130 --> 00:04:01,010 At sa iba pang mga lugar para sa mga unitialized pangkalahatang variable, 99 00:04:01,010 --> 00:04:03,190 kung sinabi mo lang, int pagsubok, sa tuktok ng iyong programa at 100 00:04:03,190 --> 00:04:05,040 ay upang itakda ang mga variable ng pagsubok 101 00:04:05,040 --> 00:04:07,626 mamaya sa programa. 102 00:04:07,626 --> 00:04:10,140 Kaya ngayon ako pagpunta sa makipag-usap tungkol sa isang bagay na tinatawag # tukuyin, 103 00:04:10,140 --> 00:04:13,380 kung saan ay isang paraan upang magbigay ng isang symbolic na pangalan sa isang pare-pareho. 104 00:04:13,380 --> 00:04:17,420 At dito namin ang isang halimbawa ng isang C programa na kinakalkula 105 00:04:17,420 --> 00:04:19,470 ang lugar ng isang lupon. 106 00:04:19,470 --> 00:04:21,690 At sa tuktok ng programa naming gawin ang isang bagay na nagsasabing 107 00:04:21,690 --> 00:04:25,830 # Tukuyin ang pay 3,14159. 108 00:04:25,830 --> 00:04:29,330 # Tukuyin ay hindi technically lumikha ng isang global variable. 109 00:04:29,330 --> 00:04:31,590 Sa halip, ito ay nagsasabi sa Preprocessor ang tagatala sa 110 00:04:31,590 --> 00:04:34,350 hanapin at palitan lahat ng mga pagkakataon ng pay sa 111 00:04:34,350 --> 00:04:37,540 3,14159 bago kino-compile. 112 00:04:37,540 --> 00:04:39,830 Gayunpaman, ito ay magiging isang kapaki-pakinabang na diskarte para sa deklarasyon 113 00:04:39,830 --> 00:04:41,510 constants, para sa paggamit sa buong programa. 114 00:04:41,510 --> 00:04:44,540 Ngayon, naghahanap sa katangian ng lugar, ito ay tumatagal sa isang Float 115 00:04:44,540 --> 00:04:48,150 Rad at nagbabalik lamang ang lugar ng isang lupon na may na 116 00:04:48,150 --> 00:04:52,920 radius o pay r nakalapat, o pay beses Rad beses Rad. 117 00:04:52,920 --> 00:04:56,040 At ito ay kung saan ang # tukuyin gumaganap ng isang pangunahing papel. 118 00:04:56,040 --> 00:04:59,270 Dahil tagatala ay isa lamang palitan ang na pay 119 00:04:59,270 --> 00:05:02,780 simbolo na may ang bilang 3,14159. 120 00:05:02,780 --> 00:05:05,560 At kaya hindi namin na magsulat na nang paulit-ulit. 121 00:05:05,560 --> 00:05:08,900 At sa susunod, kung magpasya namin upang gumamit ng higit pang mga digit ng pay, sabihin 122 00:05:08,900 --> 00:05:12,800 sabihin 3.1415926, maaari naming idagdag lamang na sa tuktok ng 123 00:05:12,800 --> 00:05:14,330 programa at hindi na baguhin ito, 124 00:05:14,330 --> 00:05:16,160 mamaya sa programa. 125 00:05:16,160 --> 00:05:18,240 Ito ay isang mahusay na paggamit ng # tukuyin. 126 00:05:18,240 --> 00:05:20,520 Hindi namin nais upang mag-imbak ng pay bilang isang global na variable na ito dahil 127 00:05:20,520 --> 00:05:21,780 maaaring baguhin mamaya sa programa. 128 00:05:21,780 --> 00:05:23,430 At alam namin pay ay hindi nagbabago. 129 00:05:23,430 --> 00:05:25,650 Isang pare-pareho. 130 00:05:25,650 --> 00:05:28,120 Kaya ito bumabalot sa aming paksa ng mga pangkalahatang variable. 131 00:05:28,120 --> 00:05:29,930 Kaya ngayon usapan natin ang tungkol sa pagkakaiba sa pagitan ng mga lokal at 132 00:05:29,930 --> 00:05:32,490 pangkalahatang variable, kung kailan gamitin ang mga ito, depende sa kanilang 133 00:05:32,490 --> 00:05:36,660 saklaw; at kung bakit hindi gamitin ang global variable sa kalooban 134 00:05:36,660 --> 00:05:39,360 dahil sa cluttering ng puwang ng pangalan. 135 00:05:39,360 --> 00:05:40,270 Ako Joe McCormick. 136 00:05:40,270 --> 00:05:42,290 At ito ay CS50.