1 00:00:07,150 --> 00:00:08,850 [Powered by Google Translate] DAVID DICIURCIO: Felly yn gysyniad pwysig afael ag ef yn 2 00:00:08,850 --> 00:00:11,010 rhaglennu yw'r syniad o gwmpas. 3 00:00:11,010 --> 00:00:13,860 Gellir Scope yn cael ei ddiffinio fel y cyd-destun y newidyn yn 4 00:00:13,860 --> 00:00:15,610 weladwy nac yn hygyrch. 5 00:00:15,610 --> 00:00:18,150 Er enghraifft, gadewch i ni ddweud ein bod wedi swyddogaeth, prif, hynny yw 6 00:00:18,150 --> 00:00:22,570 i fod i gynnydd newidyn, x, o un i ddau. 7 00:00:22,570 --> 00:00:25,690 Fel y gallwn weld, prif initializes x i un, printiau 8 00:00:25,690 --> 00:00:28,740 allan rhywfaint o destun, ac yna rhedeg y cynyddiad swyddogaeth, cyn 9 00:00:28,740 --> 00:00:30,540 argraffu testun yn fwy. 10 00:00:30,540 --> 00:00:32,545 Os yw hyn yn swyddogaeth oedd i redeg yn gywir, byddai'n 11 00:00:32,545 --> 00:00:34,120 argraffu x yn 2. 12 00:00:34,120 --> 00:00:35,370 Gadewch i ni roi cynnig arni. 13 00:00:38,870 --> 00:00:43,075 >> Felly, fel y gallwch weld, nid yw'n prif gwneud yr hyn yr oeddem yn disgwyl i. 14 00:00:43,075 --> 00:00:45,310 Mae'n dychwelyd y gwerth 1, yn hytrach 15 00:00:45,310 --> 00:00:47,150 na'r 2 oeddem yn disgwyl. 16 00:00:47,150 --> 00:00:50,060 Gall y rheswm am hyn bug eu hegluro gan cwmpas. 17 00:00:50,060 --> 00:00:52,185 Yn y swyddogaeth, prif, rydym ymgychwyn x 18 00:00:52,185 --> 00:00:53,820 yn unig o fewn y swyddogaeth. 19 00:00:53,820 --> 00:00:56,580 Mewn geiriau eraill, mae'r newidyn x yn cael ei ddatgan yn lleol o fewn y 20 00:00:56,580 --> 00:00:58,640 swyddogaeth, prif, ac nid yw'n hygyrch 21 00:00:58,640 --> 00:01:00,210 y tu allan i'r swyddogaeth. 22 00:01:00,210 --> 00:01:03,580 Dim ond y prif fynediad x yn y sefyllfa hon. 23 00:01:03,580 --> 00:01:06,990 Pan fyddwn yn galw cynyddiad nid ydym yn pasio x fel y mewnbwn, ond 24 00:01:06,990 --> 00:01:08,960 dim ond copi o x. 25 00:01:08,960 --> 00:01:11,640 O ganlyniad i hyn, mae'r cynyddiad swyddogaeth yn unig yn ychwanegu 26 00:01:11,640 --> 00:01:14,190 y gwerth 1 i gopi o werth x. 27 00:01:14,190 --> 00:01:16,170 Ond nid i X ei hun. 28 00:01:16,170 --> 00:01:19,090 Pan fyddwn yn dychwelyd i'r cyfan, nid x ei hun wedi newid o gwbl. 29 00:01:19,090 --> 00:01:22,370 Felly, bydd argraffu x ond yn cynhyrchu gwerth o 1. 30 00:01:22,370 --> 00:01:24,890 >> Wel, yna mae hynny'n gadael y cwestiwn: sut y dylem bennu 31 00:01:24,890 --> 00:01:26,230 swyddogaeth hon? 32 00:01:26,230 --> 00:01:29,500 Un ateb yn cael cynyddiad yn dychwelyd gwerth. 33 00:01:29,500 --> 00:01:31,180 Yn y modd hwn, mae'r cynyddiad swyddogaeth yn 34 00:01:31,180 --> 00:01:33,350 rhoi ni yn ôl yn gyfanrif. 35 00:01:33,350 --> 00:01:35,420 Felly dyma ein cod diwygiedig gyda'r 36 00:01:35,420 --> 00:01:37,480 swyddogaeth gynyddran bob yn ail. 37 00:01:37,480 --> 00:01:41,510 Yma, rydym yn lle hynny dychwelodd y x + 1, yn hytrach na dim ond diwedd 38 00:01:41,510 --> 00:01:44,070 gyda x yn gyfartal i x + 1. 39 00:01:44,070 --> 00:01:46,290 Hefyd, yn sylwi ein bod yn cymryd lle'r allbwn 40 00:01:46,290 --> 00:01:49,630 cynyddiad, yn flaenorol yn ddi-rym, gyda int, gan nodi bod 41 00:01:49,630 --> 00:01:52,230 Bydd cynyddiad awr yn pasio yn ôl gwerth cyfanrif. 42 00:01:52,230 --> 00:01:55,000 Nawr, ar ôl rhediadau cynyddiad, bydd yn dychwelyd gyda gwerth o 43 00:01:55,000 --> 00:01:56,535 2, yn union fel yr ydym yn bwriadu. 44 00:01:59,630 --> 00:02:02,260 >> Sefyllfa arall sy'n dangos pwysigrwydd cwmpas yn 45 00:02:02,260 --> 00:02:04,860 yn scopeloop.c. 46 00:02:04,860 --> 00:02:07,320 Yn y cod hwn, mae gennym dros ddolen lle mae'r newidyn 47 00:02:07,320 --> 00:02:10,310 cyfanswm yn cael ei ymgychwyn yn ystod pob cam. 48 00:02:10,310 --> 00:02:13,720 Yn anffodus, nid yw'r cod yn crynhoi. 49 00:02:13,720 --> 00:02:16,690 Mae hyn oherwydd bod y cyfanswm amrywiol mewn gwirionedd yn bodoli 50 00:02:16,690 --> 00:02:18,550 y tu allan i'r ddolen am. 51 00:02:18,550 --> 00:02:21,000 Newidynnau datgan mewn dolenni ond yn bodoli o fewn y 52 00:02:21,000 --> 00:02:23,967 dolen ei hun ac yn cael ei ddangos yn ein camgymeriad 53 00:02:23,967 --> 00:02:25,880 neges, heb eu datgan cyfanswm. 54 00:02:25,880 --> 00:02:28,710 Mae'r cyfanswm amrywiol eto i gael eu datgan o fewn y cwmpas 55 00:02:28,710 --> 00:02:30,420 o'r prif swyddogaeth. 56 00:02:30,420 --> 00:02:33,610 Ar ben hynny, yn ystod pob fersiwn o'n gyfer dolen, rydym yn 57 00:02:33,610 --> 00:02:36,340 yn reinitializing ein cyfanswm i 0. 58 00:02:36,340 --> 00:02:39,210 Nid yw hyn ynddo'i hun yn cadw'r cod o lunio, ond mae'n 59 00:02:39,210 --> 00:02:42,920 yn atal cyfanswm o erioed grynhoi hyd at werth y gorffennol 1. 60 00:02:42,920 --> 00:02:45,760 >> Unwaith eto, beth yw'r ffordd orau i atgyweiria hon? 61 00:02:45,760 --> 00:02:48,520 Un o'r dulliau yn cynnwys gwneud yn haws cyfanswm lleol i 62 00:02:48,520 --> 00:02:51,990 swyddogaeth, prif, yn hytrach nag i'r ddolen ei hun. 63 00:02:51,990 --> 00:02:55,210 Bydd hyn yn gyfanswm i mewn gwirionedd cynyddiad, yn y pen draw, 64 00:02:55,210 --> 00:02:57,880 caniatáu iddo gael ei argraffu ar ôl y ddolen ar gyfer. 65 00:02:57,880 --> 00:03:00,093 Techneg arall y byddaf yn fras grynhoi byddai 66 00:03:00,093 --> 00:03:02,190 fod y defnydd o newidynnau byd-eang. 67 00:03:02,190 --> 00:03:04,890 Newidynnau byd-eang o newidynnau sy'n cael eu datgan cyn y prif 68 00:03:04,890 --> 00:03:07,860 sy'n cynnal eu gwerth drwy gydol y rhaglen gyfan. 69 00:03:07,860 --> 00:03:10,710 Wrth gwrs, gall swyddogaethau newid gwerth byd-eang, 70 00:03:10,710 --> 00:03:13,470 ond nid ydynt yn mynd allan o gwmpas fel newidynnau lleol. 71 00:03:13,470 --> 00:03:15,880 Fodd bynnag, gan ddefnyddio newidynnau byd-eang yn tueddu i gael ei gwgu 72 00:03:15,880 --> 00:03:18,180 arnynt fel dylunio gwael, gan fod ffyrdd gwell o 73 00:03:18,180 --> 00:03:20,080 rhannu data ymysg swyddogaethau. 74 00:03:20,080 --> 00:03:21,920 Er enghraifft, gan ddefnyddio awgrymiadau. 75 00:03:21,920 --> 00:03:24,250 Ond mwy am hynny rywbryd arall. 76 00:03:24,250 --> 00:03:26,670 >> Yn olaf, mae'n bwysig cael dealltwriaeth o gwmpas 77 00:03:26,670 --> 00:03:29,550 yng nghyd-destun o gof y cyfrifiadur, neu RAM. 78 00:03:29,550 --> 00:03:32,470 Pan fyddwn yn gweithredu rhaglen, newidynnau lleol a swyddogaethau 79 00:03:32,470 --> 00:03:34,040 yn cael eu hychwanegu i leoliad penodol yn y 80 00:03:34,040 --> 00:03:36,010 RAM a elwir yn y pentwr. 81 00:03:36,010 --> 00:03:39,230 Fel swyddogaethau gyfnewid, mae'r fframiau pentwr o newidynnau yn 82 00:03:39,230 --> 00:03:43,910 gwaredu'n effeithiol o'r pentwr ryddhau mwy o gof. 83 00:03:43,910 --> 00:03:46,750 Felly, wrth adolygu cwmpas, gwnewch yn siŵr eich bod yn cofio y tri 84 00:03:46,750 --> 00:03:47,980 pwyntiau allweddol. 85 00:03:47,980 --> 00:03:51,220 Gall un, cwmpas fod naill ai'n lleol neu fyd-eang. 86 00:03:51,220 --> 00:03:53,990 Mae'n dibynnu ar ble y newidyn yn cael ei ddatgan. 87 00:03:53,990 --> 00:03:57,040 Dau, newidynnau datgan neu ymgychwyn mewn swyddogaethau yn 88 00:03:57,040 --> 00:03:59,510 Ni all lleol â'r swyddogaeth honno ac yn cael ei newid gan eraill 89 00:03:59,510 --> 00:04:02,790 swyddogaethau, o leiaf nid heb ddefnyddio awgrymiadau. 90 00:04:02,790 --> 00:04:05,340 Yn olaf, newidynnau hefyd yn lleol i ddolenni sy'n 91 00:04:05,340 --> 00:04:06,490 datgan mewn. 92 00:04:06,490 --> 00:04:08,100 Nid yw'r newidynnau yn hygyrch 93 00:04:08,100 --> 00:04:09,860 y tu allan i'r ddolen. 94 00:04:09,860 --> 00:04:11,170 >> Dyna'r cyfan am nawr ar gwmpas. 95 00:04:11,170 --> 00:04:12,420 Diolch am wylio.