1 00:00:00,000 --> 00:00:05,300 2 00:00:05,300 --> 00:00:07,300 DOUG Lloyd: Si ju filloni punuar me funksione, 3 00:00:07,300 --> 00:00:09,966 një tjetër gjë do të bëhet të vërtetë e rëndësishme për të kuptuar, 4 00:00:09,966 --> 00:00:12,380 i cili është koncepti i fushës ndryshueshme. 5 00:00:12,380 --> 00:00:14,490 Pra Shtrirja është një karakteristikë e një ndryshore 6 00:00:14,490 --> 00:00:18,860 që përcakton nga i cili funksionon që variabël mund të arrihen. 7 00:00:18,860 --> 00:00:24,595 >> Ka dy qëllimeve kryesore në C, ndryshoret lokale dhe ndryshoret globale. 8 00:00:24,595 --> 00:00:27,830 Tani, ndryshoret lokale mund vetëm të arrihen brenda funksioneve 9 00:00:27,830 --> 00:00:29,045 në të cilën ata janë krijuar. 10 00:00:29,045 --> 00:00:32,170 Ato nuk mund të arrihen nga çdo tjetër funksion që ekziston në programin tuaj, 11 00:00:32,170 --> 00:00:34,184 vetëm funksioni në të cilat ajo u krijua. 12 00:00:34,184 --> 00:00:36,350 Variabla globale, nga ana ana tjetër, mund të arrihen 13 00:00:36,350 --> 00:00:37,719 nga çdo funksion në program. 14 00:00:37,719 --> 00:00:40,260 Dhe arsyeja për këtë është sepse ata nuk janë krijuar brenda 15 00:00:40,260 --> 00:00:41,441 e çdo funksioni të caktuar. 16 00:00:41,441 --> 00:00:43,690 Ne deklarojmë ato jashtë të gjithë nga funksionet, të cilat 17 00:00:43,690 --> 00:00:48,940 do të thotë se çdo funksion e di se ku ajo është dhe mund të hyni dhe të manipuluar atë. 18 00:00:48,940 --> 00:00:52,010 >> Deri më tani në kursin ju keni mjaft shumë qenë duke punuar ekskluzivisht 19 00:00:52,010 --> 00:00:54,280 me variablat lokale. 20 00:00:54,280 --> 00:00:58,320 Ja një shembull i një shumë, shumë Funksioni kryesor i thjeshtë dhe një shumë të thjeshtë 21 00:00:58,320 --> 00:01:00,680 funksion shtesë që ne kemi shkruar. 22 00:01:00,680 --> 00:01:03,180 Në këtë rast, x, i cili Unë e kam vetëm me ngjyrë jeshile 23 00:01:03,180 --> 00:01:07,400 për të nxjerrë në pah lokalitetin apo shtrirja e kësaj variable, 24 00:01:07,400 --> 00:01:09,240 është lokal në funksion trefishtë. 25 00:01:09,240 --> 00:01:12,300 kryesor nuk mund t'i referohet x fare. 26 00:01:12,300 --> 00:01:14,259 Ajo nuk e di se çfarë është ajo. 27 00:01:14,259 --> 00:01:17,050 Asnjë funksion tjetër, në fakt, në qoftë se ne kishte funksione shtesë në këtu, 28 00:01:17,050 --> 00:01:19,360 mund t'i referohet x. 29 00:01:19,360 --> 00:01:23,520 >> Në mënyrë të ngjashme, rezulton që unë kam ngjyrë blu, është lokal vetëm për kryesor. 30 00:01:23,520 --> 00:01:26,980 Vetëm kryesore e di se çfarë rezultati variabël është. 31 00:01:26,980 --> 00:01:30,010 trefishtë nuk mund ta përdorin atë. 32 00:01:30,010 --> 00:01:32,580 >> Tani siç e përmenda, Variablat globale ekzistojnë. 33 00:01:32,580 --> 00:01:35,575 Nëse ju të deklarojë se ndryshore jashtë çdo funksioni, 34 00:01:35,575 --> 00:01:38,290 të gjithë nga funksionet në Programi mund të referohen asaj. 35 00:01:38,290 --> 00:01:44,010 Pra, në këtë rast unë e kam theksuar në e gjelbër një deklaratë globale variabel. 36 00:01:44,010 --> 00:01:45,830 Në këtë rast, qenie e ndryshueshme deklaruar 37 00:01:45,830 --> 00:01:48,720 quhet globale, vetëm për të të jetë tejet i qartë në lidhje me të. 38 00:01:48,720 --> 00:01:49,720 Është e tipit float. 39 00:01:49,720 --> 00:01:52,940 Dhe unë caktoj atë vlerën 0.5050. 40 00:01:52,940 --> 00:01:58,080 >> Ju do të vëreni se në kryesore dhe në trefishtë, unë jam në gjendje për t'iu referuar globale. 41 00:01:58,080 --> 00:02:03,480 Dhe në fakt, nëse unë shkoj përmes programit siç tregohet, thirrjet kryesore para trefishtë, 42 00:02:03,480 --> 00:02:10,440 shumëfishon trefishtë globale nga 3, të cilat vendos vlerën e saj për 1.5-diçka, 43 00:02:10,440 --> 00:02:16,080 1.51 ose diçka të tillë, dhe atëherë kryesor edhe printon nga vlera 44 00:02:16,080 --> 00:02:16,620 e globale. 45 00:02:16,620 --> 00:02:24,424 Pra kryesor nuk do të shtypura nga 0.5050, atë do të shtypura nga herë globale 3, 1.51. 46 00:02:24,424 --> 00:02:27,340 Pra, ju keni marrë për të jenë të kujdesshëm kur ju jeni duke punuar me ndryshore globale. 47 00:02:27,340 --> 00:02:30,260 Ndërsa ata janë shumë fleksibël në duke qenë në gjendje për të kaluar informacionin 48 00:02:30,260 --> 00:02:32,650 rreth në mënyrë që çdo funksion mund ta përdorin atë, 49 00:02:32,650 --> 00:02:34,580 ajo gjithashtu mund të ketë disa Pasojat e rrezikshme 50 00:02:34,580 --> 00:02:38,770 në qoftë se ndryshimet e një funksion vlera e një variable 51 00:02:38,770 --> 00:02:42,360 para se ju presin që ai të ndryshohet. 52 00:02:42,360 --> 00:02:44,200 >> Pse ka rëndësi se ky dallim? 53 00:02:44,200 --> 00:02:48,070 Pse nuk kemi intereson nëse disa variablave janë lokale dhe të tjerët janë globale? 54 00:02:48,070 --> 00:02:53,880 E pra, për pjesën më të madhe, ndryshoret lokale në C janë atë që quhet i miratuar nga vlera 55 00:02:53,880 --> 00:02:56,087 kur kemi bërë një telefonatë funksion. 56 00:02:56,087 --> 00:02:56,920 Cfare do te thote ajo? 57 00:02:56,920 --> 00:03:00,880 >> E pra, kur një variabël është kaluar nga vlera, i callee, i cili 58 00:03:00,880 --> 00:03:04,350 është një tjetër mënyrë për të thënë funksionin që po merr ndryshore që 59 00:03:04,350 --> 00:03:08,465 merr kaluar në si një input, ai në fakt nuk e marrin atë variabël vetë. 60 00:03:08,465 --> 00:03:12,490 Ajo merr vet kopje e tij për të punuar me të. 61 00:03:12,490 --> 00:03:14,350 Ky është një dallim të vërtetë e rëndësishme. 62 00:03:14,350 --> 00:03:18,250 Ne vetëm e pa një të dytë më parë që me ndryshore globale, 63 00:03:18,250 --> 00:03:23,240 në qoftë se ne të manipuluar globale variabël në një funksion, efekti 64 00:03:23,240 --> 00:03:26,390 ne ate qe nje funksion i mbart nëpër çdo funksion tjetër. 65 00:03:26,390 --> 00:03:28,920 >> Por me variablat lokale, kjo nuk është e vërtetë. 66 00:03:28,920 --> 00:03:32,060 Çdo funksion kur ajo merr variablave si input 67 00:03:32,060 --> 00:03:36,367 marrin kopje të këtyre variablave, jo vetë variablave. 68 00:03:36,367 --> 00:03:37,825 Pra, çfarë është efekt anësor i kësaj? 69 00:03:37,825 --> 00:03:40,450 Kjo do të thotë se ndryshueshme në telefonuesi, funksioni që 70 00:03:40,450 --> 00:03:45,600 është bërë thirrje funksion, është pandryshuar nëse nuk shkel atë. 71 00:03:45,600 --> 00:03:50,420 >> Për shembull, në këtë kod foo nuk është ndryshuar fare. 72 00:03:50,420 --> 00:03:55,450 Int foo barabartë me 4, thirrje trefishtë e foo, brenda të trefishtë, 73 00:03:55,450 --> 00:03:58,850 ne do të presim se do të foo të shumëzohet me 3 dhe u kthye, 74 00:03:58,850 --> 00:04:01,450 por nuk ka të vërtetë nuk ka efekt. 75 00:04:01,450 --> 00:04:03,460 >> Këtu megjithatë, një dallim shumë delikate. 76 00:04:03,460 --> 00:04:06,520 Ky nuk kanë efekt ne duam. 77 00:04:06,520 --> 00:04:07,730 A e shihni se pse? 78 00:04:07,730 --> 00:04:11,500 Ne jemi thelbësor foo në kryesor këtë kohë. 79 00:04:11,500 --> 00:04:16,899 >> Pra, foo int barabartë me 4, foo barabartë foo trefishtë, kur kemi bërë këtë thirrje, 80 00:04:16,899 --> 00:04:21,680 trefishtë merr kopjen e vet i foo, kopjen e vet të 4. 81 00:04:21,680 --> 00:04:27,340 Ajo thotë se kthehen 4 herë 3, apo çfarëdo ndryshueshme merr kaluar në kohë 3. 82 00:04:27,340 --> 00:04:32,109 Dhe pastaj ne të caktojë kthimin Vlera e trefishtë për të foo përsëri. 83 00:04:32,109 --> 00:04:33,650 Pra, kjo në fakt do të prishësh foo. 84 00:04:33,650 --> 00:04:35,816 Kjo është e vetmja mënyrë për të bërë kjo me ndryshore lokale. 85 00:04:35,816 --> 00:04:38,120 Pra, tani, nëse i shtojmë një tjetër linjë e kodit këtu 86 00:04:38,120 --> 00:04:40,870 ne fund te kryesor deri shtypura nga vlera e foo, 87 00:04:40,870 --> 00:04:45,030 kjo në fakt do të shtypura nga 12. 88 00:04:45,030 --> 00:04:48,600 >> Shtrirja e ndryshueshme në përgjithësi është jo shumë e një problemi 89 00:04:48,600 --> 00:04:51,190 në qoftë se ju emrin gjithë tuaj Variablat gjëra të ndryshme. 90 00:04:51,190 --> 00:04:54,920 Por ajo mund të merrni lloj të keqe në qoftë se me të njëjtin emër ndryshueshme 91 00:04:54,920 --> 00:04:58,820 shfaqet në funksione të shumta, e cila do të ndodhë shumë. 92 00:04:58,820 --> 00:05:02,130 Nëse ju ndonjëherë punojnë në bota reale ku 93 00:05:02,130 --> 00:05:06,080 ju jeni duke punuar në bashkëpunuese programet dhe njerëzit në ekipe të ndryshme 94 00:05:06,080 --> 00:05:11,000 po punojnë së bashku për të shkruar të njëjtën gjë program ose të njëjtin grup të programeve, 95 00:05:11,000 --> 00:05:13,900 ata shpesh do të ripërdorimin ndryshueshme emrat, veçanërisht ato të përbashkëta 96 00:05:13,900 --> 00:05:18,020 si X, Y, i, j, dhe kështu me radhë. 97 00:05:18,020 --> 00:05:20,370 >> Por kur variablat kanë të njëjtin emër, çështjet Fushëveprimi 98 00:05:20,370 --> 00:05:23,080 mund të merrni pak e komplikuar për të kuptoj. 99 00:05:23,080 --> 00:05:26,790 Për shembull, nuk e dini çfarë do të printohet 100 00:05:26,790 --> 00:05:30,190 ne fund te programit veçantë? 101 00:05:30,190 --> 00:05:31,280 Merrni një minutë. 102 00:05:31,280 --> 00:05:33,382 Ndalo video dhe lexoni përmes këtij programi. 103 00:05:33,382 --> 00:05:35,590 Ju mund të shihni në ne krye të ketë një deklaratë funksion 104 00:05:35,590 --> 00:05:37,350 për një funksion të quajtur rritje. 105 00:05:37,350 --> 00:05:40,800 Se funksioni merr një të vetme parametër, një numër i plotë që ne e quajmë x. 106 00:05:40,800 --> 00:05:42,610 Dhe kjo nxjerr një numër të plotë. 107 00:05:42,610 --> 00:05:44,820 Kjo është lloji kthimi në fillim. 108 00:05:44,820 --> 00:05:48,140 >> Pastaj ne kemi kryesor, një çift i linjave e kodit në kryesor, i fundit i cili 109 00:05:48,140 --> 00:05:49,250 është një deklaratë të shtypura. 110 00:05:49,250 --> 00:05:51,140 Dhe mbani mend, kjo është çështja këtu. 111 00:05:51,140 --> 00:05:54,240 Çfarë është në të vërtetë do të jetë printohen në fund të këtij funksioni? 112 00:05:54,240 --> 00:05:58,110 Dhe pastaj ne fakt kemi Përcaktimi i rritjes më poshtë. 113 00:05:58,110 --> 00:06:01,760 >> Pra, të marrë një minutë, hap përmes kodi, gjurmë gjërat jashtë. 114 00:06:01,760 --> 00:06:08,100 A e dini se çfarë do të jenë të shtypura në fundi i këtij programi të veçantë? 115 00:06:08,100 --> 00:06:08,600 >> Në rregull. 116 00:06:08,600 --> 00:06:11,433 Shpresojmë, ju keni marrë disa sekonda të përpiqen dhe të kuptoj këtë jashtë. 117 00:06:11,433 --> 00:06:13,370 Le të bëjmë atë së bashku. 118 00:06:13,370 --> 00:06:16,022 >> Kështu që unë kam kaluar nga rritje e Deklarata në krye atje. 119 00:06:16,022 --> 00:06:17,230 Ajo ishte lloj i një zbavitje. 120 00:06:17,230 --> 00:06:18,570 Kjo nuk është e ndryshueshme e vet. 121 00:06:18,570 --> 00:06:19,879 Ajo nuk ka qëllimin e vet. 122 00:06:19,879 --> 00:06:21,920 Është vetëm një funksion Deklarata, kështu që për qëllime 123 00:06:21,920 --> 00:06:24,330 e duke u përpjekur të kuptoj se çfarë është ndodh në këtë program, 124 00:06:24,330 --> 00:06:26,660 ne mund edhe vetëm të shmangur atë. 125 00:06:26,660 --> 00:06:29,560 >> Tani ne kemi në këtë rast, arsye ky problem është i ndërlikuar 126 00:06:29,560 --> 00:06:34,030 është sepse ne kemi variabla lokale në dy kryesore dhe rritje, secila prej të cilave 127 00:06:34,030 --> 00:06:35,090 është quajtur x. 128 00:06:35,090 --> 00:06:39,830 Dhe sigurisht thelbi i kësaj çështjeje është duke u përpjekur për të Süss se cilat x merr ndryshuar 129 00:06:39,830 --> 00:06:41,890 dhe si e bën atë të ndryshuar. 130 00:06:41,890 --> 00:06:46,900 Kështu që unë kam me ngjyrë çdo shembull e X kjo është lokal të kuqe kryesor. 131 00:06:46,900 --> 00:06:52,040 Dhe unë kam të ngjyrosura çdo shembull i x kjo është lokal të ardhura blu. 132 00:06:52,040 --> 00:06:55,220 >> Njoftim në këtë linjë të tretë e kryesor, y barabartë me rritje të 133 00:06:55,220 --> 00:07:00,800 x, kjo rritje nuk është duke u kaloi x kryesor-së, ose të kuqe x. 134 00:07:00,800 --> 00:07:03,320 Ajo është duke u miratuar një kopje të saj. 135 00:07:03,320 --> 00:07:06,987 Dhe ajo është vetëm do të punojë me se kopje e saj, blu x. 136 00:07:06,987 --> 00:07:08,820 Nëse ju jeni matematikisht prirur, ju mund të 137 00:07:08,820 --> 00:07:14,230 kanë menduar në vend të kësaj si x nën m për kryesor dhe x nën I për rritjes. 138 00:07:14,230 --> 00:07:15,700 Por kjo është e njëjta ide. 139 00:07:15,700 --> 00:07:18,999 x m sub, ose të kuqe e x në rrëshqitje e mëparshëm, 140 00:07:18,999 --> 00:07:21,790 janë variablat që janë local-- është shembull i X në vend që 141 00:07:21,790 --> 00:07:26,900 është lokal te kryesor, dhe x sub i, ose Variablat blu në slide e mëparshëm, 142 00:07:26,900 --> 00:07:30,760 janë raste të x që janë lokale të ardhura. 143 00:07:30,760 --> 00:07:36,220 >> Pra, ishin në gjendje të kuptoj se çfarë ky funksion printohen në fund? 144 00:07:36,220 --> 00:07:39,420 Unë jam Doug Lloyd, dhe kjo është CS50. 145 00:07:39,420 --> 00:07:41,542