1 00:00:00,000 --> 00:00:05,300 2 00:00:05,300 --> 00:00:07,300 Doug Lloyd: Kòm ou kòmanse travay ak fonksyon, 3 00:00:07,300 --> 00:00:09,966 yon lòt bagay ki pral vin vrèman enpòtan yo konprann, 4 00:00:09,966 --> 00:00:12,380 ki se konsèp nan sijè ki abòde varyab. 5 00:00:12,380 --> 00:00:14,490 Se konsa, sijè ki abòde se yon karakteristik nan yon varyab 6 00:00:14,490 --> 00:00:18,860 ki defini ki soti nan ki fonksyon ka varyab sa jwenn aksè. 7 00:00:18,860 --> 00:00:24,595 >> Gen de Scopes prensipal nan C, varyab lokal yo ak varyab mondyal. 8 00:00:24,595 --> 00:00:27,830 Koulye a, varyab lokal ka sèlman jwenn aksè nan fonksyon yo 9 00:00:27,830 --> 00:00:29,045 nan kote yo ap kreye. 10 00:00:29,045 --> 00:00:32,170 Yo pa kapab accessible pa tout lòt fonksyon ki egziste nan pwogram ou an, 11 00:00:32,170 --> 00:00:34,184 sèlman fonksyon an nan ki li te kreye. 12 00:00:34,184 --> 00:00:36,350 Varyab mondyal, sou mòn lan lòt men, ou kapab jwenn aksè 13 00:00:36,350 --> 00:00:37,719 pa nenpòt fonksyon nan pwogram nan. 14 00:00:37,719 --> 00:00:40,260 Ak rezon an pou sa a se paske yo pa ap kreye andedan 15 00:00:40,260 --> 00:00:41,441 nan nenpòt ki fonksyon patikilye. 16 00:00:41,441 --> 00:00:43,690 Nou deklare yo deyò nan tout nan fonksyon yo, ki 17 00:00:43,690 --> 00:00:48,940 vle di ke chak fonksyon konnen ki kote li se ak kapab jwenn aksè ak manipile li. 18 00:00:48,940 --> 00:00:52,010 >> Se konsa, lwen nan kou a ou te bèl pi ap travay sèlman 19 00:00:52,010 --> 00:00:54,280 ak varyab lokal yo. 20 00:00:54,280 --> 00:00:58,320 Isit la nan yon egzanp sou yon trè, trè senp fonksyon prensipal ak yon trè senp 21 00:00:58,320 --> 00:01:00,680 plis fonksyon ke nou te ekri. 22 00:01:00,680 --> 00:01:03,180 Nan ka sa a, x, ki Mwen te ki gen koulè pal vèt jis 23 00:01:03,180 --> 00:01:07,400 mete aksan sou lokalite a oswa sijè ki abòde lan ki varyab, 24 00:01:07,400 --> 00:01:09,240 se lokal yo fonksyon an trip. 25 00:01:09,240 --> 00:01:12,300 prensipal pa ka al gade nan x nan tout. 26 00:01:12,300 --> 00:01:14,259 Li pa konnen sa li ye. 27 00:01:14,259 --> 00:01:17,050 Pa gen lòt fonksyon, an reyalite, si nou te gen fonksyon adisyonèl nan isit la, 28 00:01:17,050 --> 00:01:19,360 te kapab, al gade nan x. 29 00:01:19,360 --> 00:01:23,520 >> Menm jan tou, rezilta ki mwen te sifas ki gen koulè ble, se lokal sèlman nan prensipal la. 30 00:01:23,520 --> 00:01:26,980 Se sèlman prensipal ki konnen sa ki rezilta a varyab se. 31 00:01:26,980 --> 00:01:30,010 trip pa ka sèvi ak li. 32 00:01:30,010 --> 00:01:32,580 >> Koulye a, jan mwen mansyone, varyab mondyal egziste. 33 00:01:32,580 --> 00:01:35,575 Si ou deklare ke varyab deyò nan nenpòt ki fonksyon, 34 00:01:35,575 --> 00:01:38,290 tout nan fonksyon yo nan la pwogram ka al gade nan li. 35 00:01:38,290 --> 00:01:44,010 Se konsa, nan ka sa a mwen te make nan vèt yon deklarasyon varyab mondyal. 36 00:01:44,010 --> 00:01:45,830 Nan ka sa a, nan ke yo te deklare varyab 37 00:01:45,830 --> 00:01:48,720 yo rele mondyal, jis dwe trè klè sou li. 38 00:01:48,720 --> 00:01:49,720 Li se nan kalite flote. 39 00:01:49,720 --> 00:01:52,940 Apre sa, mwen bay li valè a 0,5050. 40 00:01:52,940 --> 00:01:58,080 >> Ou ap remake ke nan prensipal ak nan trip, Mwen kapab, al gade nan mondyal la. 41 00:01:58,080 --> 00:02:03,480 Lè an reyalite, si mwen ale nan pwogram nan jan sa endike, prensipal apèl premye trip, 42 00:02:03,480 --> 00:02:10,440 miltipliye trip mondyal pa 3, ki kouche valè li nan 1.5-yon bagay, 43 00:02:10,440 --> 00:02:16,080 1.51 oswa yon bagay tankou sa, ak Lè sa a, prensipal tou simagri soti valè a 44 00:02:16,080 --> 00:02:16,620 de a sou. 45 00:02:16,620 --> 00:02:24,424 Se konsa, prensipal pa pral enprime soti 0,5050 li, pral enprime soti fwa mondyal 3, 1.51. 46 00:02:24,424 --> 00:02:27,340 Se konsa, ou te gen yo dwe atansyon lè w ap w ap travay ak varyab mondyal. 47 00:02:27,340 --> 00:02:30,260 Pandan ke yo ap trè fleksib nan ke yo te kapab pase enfòmasyon 48 00:02:30,260 --> 00:02:32,650 alantou pou ke chak fonksyon ka sèvi ak li, 49 00:02:32,650 --> 00:02:34,580 li tou ka gen kèk konsekans danjere 50 00:02:34,580 --> 00:02:38,770 si chanjman yon sèl fonksyon valè a nan yon varyab 51 00:02:38,770 --> 00:02:42,360 anvan ou ap atann li yo dwe chanje. 52 00:02:42,360 --> 00:02:44,200 >> Poukisa sa a distenksyon enpòtan? 53 00:02:44,200 --> 00:02:48,070 Poukisa nou pran swen si wi ou non kèk varyab yo lokal yo ak lòt moun yo mondyal? 54 00:02:48,070 --> 00:02:53,880 Oke, pou pati ki pi, varyab lokal nan C yo se sa ki yo rele pase bò valè 55 00:02:53,880 --> 00:02:56,087 lè nou fè yon apèl fonksyon. 56 00:02:56,087 --> 00:02:56,920 Ki sa sa vle di? 57 00:02:56,920 --> 00:03:00,880 >> Oke, lè se yon varyab te pase pa valè, aple a, ki 58 00:03:00,880 --> 00:03:04,350 se yon lòt fason pou li di fonksyon an ki ap resevwa varyab la ki 59 00:03:04,350 --> 00:03:08,465 vin te pase nan kòm yon D ', li aktyèlman pa resevwa varyab sa tèt li. 60 00:03:08,465 --> 00:03:12,490 Li resevwa pwòp li yo kopi li nan travay avèk yo. 61 00:03:12,490 --> 00:03:14,350 Sa a se yon distenksyon vrèman enpòtan. 62 00:03:14,350 --> 00:03:18,250 Nou jis te wè yon dezyèm Anons sa pibliye depi ke ak varyab mondyal, 63 00:03:18,250 --> 00:03:23,240 si nou manipile mondyal la varyab nan yon sèl fonksyon, efè a 64 00:03:23,240 --> 00:03:26,390 nan ki yon sèl fonksyon pote a bay chak fonksyon ak lòt. 65 00:03:26,390 --> 00:03:28,920 >> Men, avèk varyab lokal yo, sa a, se pa vre. 66 00:03:28,920 --> 00:03:32,060 Chak fonksyon lè li resevwa varyab kòm opinyon 67 00:03:32,060 --> 00:03:36,367 resevwa kopi sa yo varyab, pa varyab yo tèt yo. 68 00:03:36,367 --> 00:03:37,825 Se konsa, ki sa ki efè a bò nan sa? 69 00:03:37,825 --> 00:03:40,450 Sa vle di ke varyab la nan moun kap rele a, fonksyon an ki 70 00:03:40,450 --> 00:03:45,600 se fè apèl la fonksyon, se chanje sof si ou pase sou desizyon li. 71 00:03:45,600 --> 00:03:50,420 >> Pou egzanp, nan kòd sa a foo se pa sa chanje nan tout. 72 00:03:50,420 --> 00:03:55,450 Int foo egal 4, rele trip a foo, andedan nan trip, 73 00:03:55,450 --> 00:03:58,850 nou ta espere ke foo ta dwe miltipliye pa 3 ak tounen, 74 00:03:58,850 --> 00:04:01,450 men gen nan aktyèlman pa gen okenn efè. 75 00:04:01,450 --> 00:04:03,460 >> Isit la menm si, yon diferans trè sibtil. 76 00:04:03,460 --> 00:04:06,520 Sa a fè sa ki gen efè a nou vle. 77 00:04:06,520 --> 00:04:07,730 Ou wè poukisa? 78 00:04:07,730 --> 00:04:11,500 Nou ap prensip foo nan prensipal moman sa a. 79 00:04:11,500 --> 00:04:16,899 >> Se konsa, int foo egal 4, foo egal trip foo, lè nou fè ki rele, 80 00:04:16,899 --> 00:04:21,680 trip vin kopi pwòp li yo a foo, kopi pwòp li yo nan 4. 81 00:04:21,680 --> 00:04:27,340 Li di retounen 4 fwa 3, oswa kèlkeswa sa varyab vin pase nan tan 3. 82 00:04:27,340 --> 00:04:32,109 Lè sa a, nou bay retounen nan valè de trip foo ankò. 83 00:04:32,109 --> 00:04:33,650 Se konsa, sa a aktyèlman ta recouvrir foo. 84 00:04:33,650 --> 00:04:35,816 Sa a se wout la sèlman nan fè sa a ak varyab lokal yo. 85 00:04:35,816 --> 00:04:38,120 Se konsa, kounye si nou ajoute yon lòt liy nan Kòd isit la 86 00:04:38,120 --> 00:04:40,870 nan fen prensipal la enprime soti valè a nan foo, 87 00:04:40,870 --> 00:04:45,030 li ta an reyalite enprime soti 12. 88 00:04:45,030 --> 00:04:48,600 >> Sijè ki abòde Varyab se jeneralman pa twòp nan yon pwoblèm 89 00:04:48,600 --> 00:04:51,190 si ou non tout nan ou varyab bagay diferan. 90 00:04:51,190 --> 00:04:54,920 Men, li ka jwenn kalite anbarasan si menm non yo varyab 91 00:04:54,920 --> 00:04:58,820 parèt nan plizyè fonksyon, ki pral rive yon anpil. 92 00:04:58,820 --> 00:05:02,130 Si ou janm travay nan mond reyèl la kote 93 00:05:02,130 --> 00:05:06,080 ou ap travay sou tèt ansanm pwogram ak moun ki nan ekip diferan 94 00:05:06,080 --> 00:05:11,000 yo ap travay ansanm yo ekri menm bagay la tou pwogram oswa mete nan menm nan pwogram, 95 00:05:11,000 --> 00:05:13,900 yo pral souvan jam itilize varyab non, yo menm patikilyèman komen 96 00:05:13,900 --> 00:05:18,020 tankou x, y, mwen, J, ak sou sa. 97 00:05:18,020 --> 00:05:20,370 >> Men, lè gen varyab Non an menm, pwoblèm sijè ki abòde 98 00:05:20,370 --> 00:05:23,080 ka jwenn yon ti kras Delice analizan. 99 00:05:23,080 --> 00:05:26,790 Pou egzanp, ou konnen sa ki ta ap enprime soti 100 00:05:26,790 --> 00:05:30,190 nan fen an nan pwogram sa a an patikilye? 101 00:05:30,190 --> 00:05:31,280 Pran yon minit. 102 00:05:31,280 --> 00:05:33,382 Pran yon ti pòz videyo a ak li nan pwogram sa a. 103 00:05:33,382 --> 00:05:35,590 Ou ka wè nan nou an tèt gen yon deklarasyon fonksyon 104 00:05:35,590 --> 00:05:37,350 pou yon fonksyon rele enkreman. 105 00:05:37,350 --> 00:05:40,800 Sa fonksyon pran yon sèl paramèt, yon nonb antye relatif ki nou rele x. 106 00:05:40,800 --> 00:05:42,610 Epi, se sorties yon nonb antye relatif. 107 00:05:42,610 --> 00:05:44,820 Sa a kalite a retounen nan kòmansman an. 108 00:05:44,820 --> 00:05:48,140 >> Lè sa a, nou gen prensipal yo, yon koup nan liy nan kòd nan prensipal, dènye a nan yo ki 109 00:05:48,140 --> 00:05:49,250 se yon deklarasyon ekri an lèt detache. 110 00:05:49,250 --> 00:05:51,140 Epi sonje, sa a, se kesyon an isit la. 111 00:05:51,140 --> 00:05:54,240 Ki sa ki aktyèlman pral yo dwe enprime nan fen a nan fonksyon sa a? 112 00:05:54,240 --> 00:05:58,110 Lè sa a, nou gen la aktyèlman definisyon nan enkreman anba a. 113 00:05:58,110 --> 00:06:01,760 >> Se konsa, pran yon minit, etap nan kòd la, trase bagay sa yo soti. 114 00:06:01,760 --> 00:06:08,100 Ou konnen ki sa yo pral enprime nan nan fen pwogram sa a an patikilye? 115 00:06:08,100 --> 00:06:08,600 >> Tout dwa. 116 00:06:08,600 --> 00:06:11,433 Èspere ke, ou te pran yon kèk segond eseye ak analizan yon sèl sa a soti. 117 00:06:11,433 --> 00:06:13,370 Se pou yo fè l 'ansanm. 118 00:06:13,370 --> 00:06:16,022 >> Se konsa, mwen te janbe lòt soti nan enkreman deklarasyon nan tèt la a. 119 00:06:16,022 --> 00:06:17,230 Li te kalite yon distraksyon. 120 00:06:17,230 --> 00:06:18,570 Li pa varyab pwòp li yo. 121 00:06:18,570 --> 00:06:19,879 Li pa gen sijè ki abòde pwòp li yo. 122 00:06:19,879 --> 00:06:21,920 Se jis yon fonksyon deklarasyon, se konsa pou rezon 123 00:06:21,920 --> 00:06:24,330 nan ap eseye analizan soti sa ki nan pase nan pwogram sa a, 124 00:06:24,330 --> 00:06:26,660 nou ta ka kòm byen jis evite li. 125 00:06:26,660 --> 00:06:29,560 >> Koulye a, nou gen nan ka sa a, nan Rezon ki fè pwoblèm sa a se difisil 126 00:06:29,560 --> 00:06:34,030 se paske nou gen varyab lokal yo nan tou de prensipal la ak enkreman, chak nan ki 127 00:06:34,030 --> 00:06:35,090 se rele x. 128 00:06:35,090 --> 00:06:39,830 Ak nan kou neu a nan pwoblèm sa a se ap eseye su soti ki x vin chanje 129 00:06:39,830 --> 00:06:41,890 ak kijan li jwenn chanje. 130 00:06:41,890 --> 00:06:46,900 Se konsa, mwen te ki gen koulè pal chak egzanp nan x sa a, se lokal yo wouj prensipal la. 131 00:06:46,900 --> 00:06:52,040 Apre sa, mwen te ki gen koulè pal chak egzanp nan x sa a, se lokal yo kantite ble. 132 00:06:52,040 --> 00:06:55,220 >> Avi nan ki twazyèm liy a prensipal yo, y egal enkreman 133 00:06:55,220 --> 00:07:00,800 x, ki se ke yo te pa enkreman pase x prensipal la, oswa x wouj la. 134 00:07:00,800 --> 00:07:03,320 Li nan ap resevwa te pase yon kopi li. 135 00:07:03,320 --> 00:07:06,987 Apre sa, li la sèlman pral travay avèk ki kopi li, x la ble. 136 00:07:06,987 --> 00:07:08,820 Si ou se matematik enkline, ou ta ka 137 00:07:08,820 --> 00:07:14,230 te olye te panse de sa a kòm x sub m pou prensipal ak x sub mwen pou kantite. 138 00:07:14,230 --> 00:07:15,700 Men, li la lide a menm. 139 00:07:15,700 --> 00:07:18,999 x sub m, oswa wouj la x nan nan glise anvan an, 140 00:07:18,999 --> 00:07:21,790 yo varyab yo ki local-- se egzanp lan nan x olye ki 141 00:07:21,790 --> 00:07:26,900 se nan lokal yo prensipal yo, e mwen x sub, oswa varyab ble nan glise anvan an, 142 00:07:26,900 --> 00:07:30,760 yo ka yo nan x ki yo lokal yo kantite. 143 00:07:30,760 --> 00:07:36,220 >> Se konsa, ou te kapab konnen sa ki sa a fonksyon enprime nan fen a? 144 00:07:36,220 --> 00:07:39,420 Mwen se Doug Lloyd, e sa se CS50. 145 00:07:39,420 --> 00:07:41,542