1 00:00:00,000 --> 00:00:05,300 2 00:00:05,300 --> 00:00:07,300 DOUG LLOYD: Wrth i chi ddechrau gweithio gyda swyddogaethau, 3 00:00:07,300 --> 00:00:09,966 beth arall yn mynd i ddod yn bwysig iawn i ddeall, 4 00:00:09,966 --> 00:00:12,380 sef y cysyniad o gwmpas amrywiol. 5 00:00:12,380 --> 00:00:14,490 Felly cwmpas yn nodweddiadol o newidyn 6 00:00:14,490 --> 00:00:18,860 sy'n diffinio o ba swyddogaethau Gellir gweld y newidyn. 7 00:00:18,860 --> 00:00:24,595 >> Mae dau scopes gynradd yn C, newidynnau lleol a newidynnau byd-eang. 8 00:00:24,595 --> 00:00:27,830 Yn awr, gall newidynnau lleol yn unig cael mynediad o fewn y swyddogaethau 9 00:00:27,830 --> 00:00:29,045 lle y maent yn ei greu. 10 00:00:29,045 --> 00:00:32,170 Ni gellir cael mynediad atynt gan bob eraill swyddogaeth sy'n bodoli yn eich rhaglen, 11 00:00:32,170 --> 00:00:34,184 Dim ond y swyddogaeth yn y cafodd ei greu. 12 00:00:34,184 --> 00:00:36,350 Newidynnau byd-eang, ar y llaw arall, gellir cael mynediad 13 00:00:36,350 --> 00:00:37,719 gan unrhyw swyddogaeth yn y rhaglen. 14 00:00:37,719 --> 00:00:40,260 A'r rheswm am hynny yw oherwydd nad ydynt yn creu y tu mewn 15 00:00:40,260 --> 00:00:41,441 unrhyw swyddogaeth benodol. 16 00:00:41,441 --> 00:00:43,690 Rydym yn eu datgan y tu allan i holl swyddogaethau, a oedd yn 17 00:00:43,690 --> 00:00:48,940 yn golygu bod pob swyddogaeth yn gwybod lle y mae ac yn gallu cael mynediad a thrin ei. 18 00:00:48,940 --> 00:00:52,010 >> Hyd yn hyn yn y cwrs rydych chi wedi 'n bert llawer wedi bod yn gweithio yn unig 19 00:00:52,010 --> 00:00:54,280 gyda newidynnau lleol. 20 00:00:54,280 --> 00:00:58,320 Dyma enghraifft o iawn, iawn Prif swyddogaeth syml ac yn syml iawn 21 00:00:58,320 --> 00:01:00,680 swyddogaeth ychwanegol yr ydym wedi ysgrifennu. 22 00:01:00,680 --> 00:01:03,180 Yn yr achos hwn, x, a oedd yn Rwyf wedi lliw gwyrdd yn unig 23 00:01:03,180 --> 00:01:07,400 i dynnu sylw at yr ardal leol neu cwmpas y newidyn, 24 00:01:07,400 --> 00:01:09,240 yn lleol i'r swyddogaeth driphlyg. 25 00:01:09,240 --> 00:01:12,300 Ni all prif gyfeirio at x o gwbl. 26 00:01:12,300 --> 00:01:14,259 Nid yw'n gwybod beth ydyw. 27 00:01:14,259 --> 00:01:17,050 Nid oes unrhyw swyddogaeth arall, mewn gwirionedd, os ydym Roedd swyddogaethau ychwanegol mewn yma, 28 00:01:17,050 --> 00:01:19,360 Gallai gyfeirio at x. 29 00:01:19,360 --> 00:01:23,520 >> Yn yr un modd, mae canlyniadau yr wyf i wedi lliwio'n las, yn lleol yn unig i'r prif. 30 00:01:23,520 --> 00:01:26,980 Dim ond prif yn gwybod beth y canlyniad yw newidyn. 31 00:01:26,980 --> 00:01:30,010 Ni all triphlyg ddefnyddio. 32 00:01:30,010 --> 00:01:32,580 >> Nawr fel y soniais, newidynnau byd-eang yn bodoli. 33 00:01:32,580 --> 00:01:35,575 Os byddwch yn datgan bod newidyn y tu allan i unrhyw swyddogaeth, 34 00:01:35,575 --> 00:01:38,290 pob un o'r swyddogaethau yn y Gall rhaglen gyfeirio ato. 35 00:01:38,290 --> 00:01:44,010 Felly, yn yr achos hwn rwyf wedi hamlygu yn gwyrdd datganiad newidyn byd-eang. 36 00:01:44,010 --> 00:01:45,830 Yn yr achos hwn, mae'r newidyn sy'n cael ei ddatgan 37 00:01:45,830 --> 00:01:48,720 gelwir byd-eang, dim ond i fod yn hynod glir am y peth. 38 00:01:48,720 --> 00:01:49,720 Mae'n y math arnofio. 39 00:01:49,720 --> 00:01:52,940 Ac yr wyf yn aseinio ei werth 0.5050. 40 00:01:52,940 --> 00:01:58,080 >> Byddwch yn sylwi bod yn y prif ac yn triphlyg, yr wyf yn gallu cyfeirio at fyd-eang. 41 00:01:58,080 --> 00:02:03,480 Ac yn wir, os byddaf yn mynd drwy'r rhaglen fel y nodwyd, prif alwadau cyntaf triphlyg, 42 00:02:03,480 --> 00:02:10,440 lluosi triphlyg byd-eang o 3, a oedd yn yn gosod ei werth i 1.5-rhywbeth, 43 00:02:10,440 --> 00:02:16,080 1.51 neu rywbeth fel 'na, ac Yna prif hefyd yn argraffu allan y gwerth 44 00:02:16,080 --> 00:02:16,620 o fyd-eang. 45 00:02:16,620 --> 00:02:24,424 Felly, ni fydd prif argraffu 0.5050, mae'n Bydd argraffu amseroedd byd-eang 3, 1.51. 46 00:02:24,424 --> 00:02:27,340 Felly, mae'n rhaid i chi fod yn ofalus wrth eich bod yn gweithio gyda newidynnau byd-eang. 47 00:02:27,340 --> 00:02:30,260 Er eu bod yn hyblyg iawn mewn y gallu i drosglwyddo gwybodaeth 48 00:02:30,260 --> 00:02:32,650 o gwmpas er mwyn i bob Gall swyddogaeth ddefnyddio, 49 00:02:32,650 --> 00:02:34,580 gall hefyd gael rhywfaint o canlyniadau peryglus 50 00:02:34,580 --> 00:02:38,770 os yw newidiadau un swyddogaeth gwerth newidyn 51 00:02:38,770 --> 00:02:42,360 cyn i chi yn disgwyl iddo gael ei newid. 52 00:02:42,360 --> 00:02:44,200 >> Pam mae gwahaniaeth hwn yn bwysig? 53 00:02:44,200 --> 00:02:48,070 Pam rydym yn poeni a yw rhai newidynnau yn lleol ac eraill yn fyd-eang? 54 00:02:48,070 --> 00:02:53,880 Wel, ar y cyfan, newidynnau lleol yn C yn yr hyn a elwir basio gan werth 55 00:02:53,880 --> 00:02:56,087 pan fyddwn yn gwneud swyddogaeth galwadau. 56 00:02:56,087 --> 00:02:56,920 Beth yw ystyr hynny? 57 00:02:56,920 --> 00:03:00,880 >> Wel, pan newidyn ei basio yn ôl gwerth, mae'r callee, a oedd yn 58 00:03:00,880 --> 00:03:04,350 yn ffordd arall o ddweud y swyddogaeth hynny yw derbyn y newidyn sy'n 59 00:03:04,350 --> 00:03:08,465 yn cael ei basio yn fel mewnbwn, mae'n mewn gwirionedd nid yw'n derbyn bod newidyn ei hun. 60 00:03:08,465 --> 00:03:12,490 Mae'n derbyn ei ben ei hun copi ohono i weithio gyda nhw. 61 00:03:12,490 --> 00:03:14,350 Mae hwn yn wahaniaeth pwysig iawn. 62 00:03:14,350 --> 00:03:18,250 Rydym yn unig yn gweld eiliad yn ôl hynny gyda newidynnau byd-eang, 63 00:03:18,250 --> 00:03:23,240 os byddwn yn trin y byd-eang amrywiol mewn un swyddogaeth, yr effaith 64 00:03:23,240 --> 00:03:26,390 yn yr un swyddogaeth yn cario drwodd i bob swyddogaeth arall. 65 00:03:26,390 --> 00:03:28,920 >> Ond gyda newidynnau lleol, nid yw hynny'n wir. 66 00:03:28,920 --> 00:03:32,060 Mae pob swyddogaeth pan fydd yn yn derbyn newidynnau fel mewnbwn 67 00:03:32,060 --> 00:03:36,367 cael copïau o newidynnau hynny, nid oedd y newidynnau eu hunain. 68 00:03:36,367 --> 00:03:37,825 Felly beth yw'r sgîl-effaith o hynny? 69 00:03:37,825 --> 00:03:40,450 Mae hynny'n golygu bod y newidyn yn y sawl sy'n galw, y swyddogaeth sydd 70 00:03:40,450 --> 00:03:45,600 yn gwneud y swyddogaeth alwad, yw heb ei newid oni bai eich bod yn drech iddo. 71 00:03:45,600 --> 00:03:50,420 >> Er enghraifft, yn y cod hwn Nid yw foo cael ei newid o gwbl. 72 00:03:50,420 --> 00:03:55,450 Int foo hafal 4, ffoniwch deires o foo, y tu mewn o deires, 73 00:03:55,450 --> 00:03:58,850 byddem yn disgwyl y byddai hynny foo gael ei lluosi â 3 a ddychwelwyd, 74 00:03:58,850 --> 00:04:01,450 ond nid mewn gwirionedd unrhyw effaith. 75 00:04:01,450 --> 00:04:03,460 >> Yma, fodd bynnag, mae gwahaniaeth cynnil iawn. 76 00:04:03,460 --> 00:04:06,520 Mae hyn yn cael yr effaith yr ydym ei eisiau. 77 00:04:06,520 --> 00:04:07,730 A ydych yn gweld pam? 78 00:04:07,730 --> 00:04:11,500 Rydym yn gor-redol foo ym mhrif y tro hwn. 79 00:04:11,500 --> 00:04:16,899 >> Felly foo int hafal 4, foo hafal foo triphlyg, pan fyddwn yn gwneud yr alwad, 80 00:04:16,899 --> 00:04:21,680 triphlyg yn cael ei gopi ei hun o foo, ei gopi ei hun o 4. 81 00:04:21,680 --> 00:04:27,340 Mae'n dweud yn dychwelyd 4 gwaith 3, neu beth bynnag newidyn cael ei drosglwyddo yn y cyfnod 3. 82 00:04:27,340 --> 00:04:32,109 Ac yna rydym yn aseinio y ffurflen gwerth triphlyg i foo eto. 83 00:04:32,109 --> 00:04:33,650 Felly, mae hyn mewn gwirionedd byddai trosysgrifo foo. 84 00:04:33,650 --> 00:04:35,816 Dyma'r unig ffordd o wneud hyn gyda newidyn lleol. 85 00:04:35,816 --> 00:04:38,120 Felly nawr os byddwn yn ychwanegu un arall llinell o god yma 86 00:04:38,120 --> 00:04:40,870 ar ddiwedd y brif i argraffwch gwerth foo, 87 00:04:40,870 --> 00:04:45,030 byddai mewn gwirionedd yn argraffu'r 12. 88 00:04:45,030 --> 00:04:48,600 >> Cwmpas Amrywiol yn gyffredinol dim gormod o broblem 89 00:04:48,600 --> 00:04:51,190 os ydych yn enwi eich holl newidynnau gwahanol bethau. 90 00:04:51,190 --> 00:04:54,920 Ond gall gael math o cas os bydd yr un enw newidyn 91 00:04:54,920 --> 00:04:58,820 yn ymddangos mewn swyddogaethau lluosog, a fydd yn digwydd llawer. 92 00:04:58,820 --> 00:05:02,130 Os ydych chi erioed yn gweithio yn y byd go iawn lle 93 00:05:02,130 --> 00:05:06,080 ydych yn gweithio ar y cyd rhaglenni a phobl mewn gwahanol dimau 94 00:05:06,080 --> 00:05:11,000 yn gweithio gyda'i gilydd i ysgrifennu yr un fath rhaglen neu yr un set o raglenni, 95 00:05:11,000 --> 00:05:13,900 byddant yn aml yn ailddefnyddio newidyn enwau, rhai yn arbennig o gyffredin 96 00:05:13,900 --> 00:05:18,020 fel x, y, i, j, ac yn y blaen. 97 00:05:18,020 --> 00:05:20,370 >> Ond pan newidynnau yn cael un enw, materion cwmpas 98 00:05:20,370 --> 00:05:23,080 yn gallu cael ychydig yn anoddach gramadegu. 99 00:05:23,080 --> 00:05:26,790 Er enghraifft, ydych chi'n gwybod beth fyddai'n eu hargraffu 100 00:05:26,790 --> 00:05:30,190 ar ddiwedd y rhaglen benodol? 101 00:05:30,190 --> 00:05:31,280 Cymerwch funud. 102 00:05:31,280 --> 00:05:33,382 Oedi y fideo a darllen drwy'r rhaglen hon. 103 00:05:33,382 --> 00:05:35,590 Gallwch weld yn y top i ni gael datganiad swyddogaeth 104 00:05:35,590 --> 00:05:37,350 i swyddogaeth o'r enw gynyddiad. 105 00:05:37,350 --> 00:05:40,800 Swyddogaeth honno yn cymryd sengl paramedr, yn gyfanrif yr ydym yn galw x. 106 00:05:40,800 --> 00:05:42,610 Ac mae'n allbynnau yn gyfanrif. 107 00:05:42,610 --> 00:05:44,820 Dyna'r math dychwelyd ar y dechrau. 108 00:05:44,820 --> 00:05:48,140 >> Yna, mae gennym brif, un neu ddau o linellau o god yn y prif, yr olaf o'r rhain 109 00:05:48,140 --> 00:05:49,250 yn ddatganiad print. 110 00:05:49,250 --> 00:05:51,140 A chofiwch, dyna'r cwestiwn yma. 111 00:05:51,140 --> 00:05:54,240 Beth yw mewn gwirionedd yn mynd i fod hargraffu ar ddiwedd y swyddogaeth hon? 112 00:05:54,240 --> 00:05:58,110 Ac yna rydym mewn gwirionedd yn cael y diffiniad o cynyddiad isod. 113 00:05:58,110 --> 00:06:01,760 >> Felly gymryd munud, cam drwy y cod, olrhain pethau allan. 114 00:06:01,760 --> 00:06:08,100 Ydych chi'n gwybod beth fydd yn cael ei argraffu ar diwedd y rhaglen benodol? 115 00:06:08,100 --> 00:06:08,600 >> Iawn. 116 00:06:08,600 --> 00:06:11,433 Gobeithio, rydych chi wedi cymryd ychydig eiliadau i geisio gramadegu hwn allan. 117 00:06:11,433 --> 00:06:13,370 Gadewch i ni ei wneud gyda'n gilydd. 118 00:06:13,370 --> 00:06:16,022 >> Felly dwi wedi croesi allan cynyddiad yn datganiad ar y brig yno. 119 00:06:16,022 --> 00:06:17,230 Roedd yn fath o tynnu sylw. 120 00:06:17,230 --> 00:06:18,570 Dyw hi ddim yn ei newidyn ei hun. 121 00:06:18,570 --> 00:06:19,879 Nid oes ganddo ei gwmpas ei hun. 122 00:06:19,879 --> 00:06:21,920 Mae'n dim ond swyddogaeth datganiad, felly ar gyfer dibenion 123 00:06:21,920 --> 00:06:24,330 o geisio dosrannu gwybod beth sydd ar sy'n digwydd yn y rhaglen hon, 124 00:06:24,330 --> 00:06:26,660 rydym Efallai yn ogystal dim ond osgoi. 125 00:06:26,660 --> 00:06:29,560 >> Nawr mae gennym yn yr achos hwn, mae'r rheswm y broblem hon yn ddyrys 126 00:06:29,560 --> 00:06:34,030 yw oherwydd bod gennym newidynnau lleol mewn y ddau brif a cynyddiad, pob un ohonynt 127 00:06:34,030 --> 00:06:35,090 yw enw x. 128 00:06:35,090 --> 00:06:39,830 Ac wrth gwrs craidd y mater hwn ceisio Suss pa x yn cael ei newid 129 00:06:39,830 --> 00:06:41,890 a sut mae'n cael ei newid. 130 00:06:41,890 --> 00:06:46,900 Felly dwi wedi lliw mhob achos o x sy'n lleol i'r prif coch. 131 00:06:46,900 --> 00:06:52,040 Ac yr wyf i wedi lliw pob achos o x mae hynny'n lleol i gynyddiad glas. 132 00:06:52,040 --> 00:06:55,220 >> Rhybudd yn y drydedd linell o brif, y yn hafal i cynyddiad 133 00:06:55,220 --> 00:07:00,800 x, nad yw cynyddiad yn cael ei pasio prif yn x, neu'r x goch. 134 00:07:00,800 --> 00:07:03,320 Mae'n cael ei basio copi ohono. 135 00:07:03,320 --> 00:07:06,987 Ac mae'n dim ond yn mynd i weithio gyda bod copi ohono, mae'r x glas. 136 00:07:06,987 --> 00:07:08,820 Os ydych yn fathemategol oleddf, efallai y byddwch 137 00:07:08,820 --> 00:07:14,230 yn lle hynny wedi meddwl am hyn fel x is metr ar gyfer prif ac is-x ff am cynyddiad. 138 00:07:14,230 --> 00:07:15,700 Ond mae'n yr un syniad. 139 00:07:15,700 --> 00:07:18,999 x is m, neu'r x yn goch yn y sleid blaenorol, 140 00:07:18,999 --> 00:07:21,790 yw'r newidynnau sy'n cael eu local-- yn y lle o x yn hytrach hynny 141 00:07:21,790 --> 00:07:26,900 yn lleol i'r prif, a x is i, neu'r newidynnau glas yn y sleid blaenorol, 142 00:07:26,900 --> 00:07:30,760 yw'r enghreifftiau o x sy'n yn lleol i gynyddiad. 143 00:07:30,760 --> 00:07:36,220 >> Felly, a gawsoch chi ei chyfrif i maes beth swyddogaeth hon wedi'i argraffu ar y diwedd? 144 00:07:36,220 --> 00:07:39,420 Rwy'n Doug Lloyd, ac mae hyn yn CS50. 145 00:07:39,420 --> 00:07:41,542