1 00:00:00,000 --> 00:00:05,300 2 00:00:05,300 --> 00:00:07,300 Doug LLOYD: Kā jūs sākat strādājot ar funkcijām, 3 00:00:07,300 --> 00:00:09,966 Vēl viena lieta ir gatavojas kļūt tiešām svarīgi saprast, 4 00:00:09,966 --> 00:00:12,380 kas ir jēdziens mainīgo jomu. 5 00:00:12,380 --> 00:00:14,490 Tātad darbības joma ir raksturīgs ir mainīgs 6 00:00:14,490 --> 00:00:18,860 kas nosaka, no kurām funkcijām ka mainīgais var piekļūt. 7 00:00:18,860 --> 00:00:24,595 >> Ir divi galvenie jomu in C, vietējās mainīgie un globālie mainīgie. 8 00:00:24,595 --> 00:00:27,830 Tagad, vietējie mainīgie var tikai piekļūt ietvaros funkcijām 9 00:00:27,830 --> 00:00:29,045 kurā viņi radīja. 10 00:00:29,045 --> 00:00:32,170 Tie nevar piekļūt ar katru otro funkcija, kas pastāv jūsu programmā, 11 00:00:32,170 --> 00:00:34,184 tikai funkcija kurā tas tika izveidots. 12 00:00:34,184 --> 00:00:36,350 Globālie mainīgie, no No otras puses, var piekļūt 13 00:00:36,350 --> 00:00:37,719 jebkura funkcija programmā. 14 00:00:37,719 --> 00:00:40,260 Un iemesls tam ir jo viņi nav radīti iekšā 15 00:00:40,260 --> 00:00:41,441 no noteiktas funkcijas. 16 00:00:41,441 --> 00:00:43,690 Mēs paziņojam viņus ārpus visas funkcijas, kas 17 00:00:43,690 --> 00:00:48,940 nozīmē, ka katra funkcija zina, kur tas ir un var piekļūt un manipulēt ar to. 18 00:00:48,940 --> 00:00:52,010 >> Līdz šim gaitā jūs esat diezgan daudz strādājusi vienīgi 19 00:00:52,010 --> 00:00:54,280 ar vietējiem mainīgajiem. 20 00:00:54,280 --> 00:00:58,320 Lūk, piemērs no ļoti, ļoti vienkāršs galvenā funkcija un ļoti vienkāršs 21 00:00:58,320 --> 00:01:00,680 papildu funkcija, kas mēs esam rakstīts. 22 00:01:00,680 --> 00:01:03,180 Šajā gadījumā, x, kas Esmu zaļā krāsā tikko 23 00:01:03,180 --> 00:01:07,400 izcelt apvidus vai veidu, šī mainīgā, 24 00:01:07,400 --> 00:01:09,240 ir vietējie funkcijai triple. 25 00:01:09,240 --> 00:01:12,300 Galvenais nevar atsaukties uz x vispār. 26 00:01:12,300 --> 00:01:14,259 Tā nezina, kas tas ir. 27 00:01:14,259 --> 00:01:17,050 Neviena cita funkcija, patiesībā, ja mēs bija papildus funkcijas šeit, 28 00:01:17,050 --> 00:01:19,360 varētu atsaukties uz x. 29 00:01:19,360 --> 00:01:23,520 >> Līdzīgi rezultāti, kas es esmu zilā krāsā, ir vietējais tikai uz galveno. 30 00:01:23,520 --> 00:01:26,980 Tikai galvenais zina, ko mainīgais rezultāts ir. 31 00:01:26,980 --> 00:01:30,010 triple nevar izmantot. 32 00:01:30,010 --> 00:01:32,580 >> Tagad, kā jau minēju, globālie mainīgie pastāv. 33 00:01:32,580 --> 00:01:35,575 Ja jums paziņot, ka mainīgo ārpus jebkuras funkcijas, 34 00:01:35,575 --> 00:01:38,290 visas funkcijas, Programma var atsaukties uz to. 35 00:01:38,290 --> 00:01:44,010 Tātad šajā gadījumā es esmu izcelts green globāls mainīgais deklarācija. 36 00:01:44,010 --> 00:01:45,830 Šajā gadījumā mainīgais tiek pasludināts 37 00:01:45,830 --> 00:01:48,720 sauc par globālo, tikai būt ļoti skaidri par to. 38 00:01:48,720 --> 00:01:49,720 Tas ir tipa pludiņu. 39 00:01:49,720 --> 00:01:52,940 Un es piešķirt tai vērtību 0.5050. 40 00:01:52,940 --> 00:01:58,080 >> Jūs pamanīsiet, ka galvenais un triple, es varu atsaukties uz pasaules. 41 00:01:58,080 --> 00:02:03,480 Un patiesībā, ja man iet caur programmu kā norādīts, galvenie pirmie zvani triple, 42 00:02:03,480 --> 00:02:10,440 triple vairojas globālie par 3, kas nosaka tās vērtību 1,5-kaut ko, 43 00:02:10,440 --> 00:02:16,080 1.51 vai kaut kas tamlīdzīgs, un tad galvenais arī izdrukā vērtību 44 00:02:16,080 --> 00:02:16,620 no pasaules. 45 00:02:16,620 --> 00:02:24,424 Tātad galvenais nebūs izdrukāt 0.5050, to būs izdrukāt globālās reizes 3, 1.51. 46 00:02:24,424 --> 00:02:27,340 Tātad jums ir jābūt uzmanīgiem, kad jūs strādājat ar globālo mainīgo. 47 00:02:27,340 --> 00:02:30,260 Kamēr viņi ir ļoti elastīga var novirzīt informāciju 48 00:02:30,260 --> 00:02:32,650 apmēram tā, ka katrs funkciju var izmantot, 49 00:02:32,650 --> 00:02:34,580 tas arī var būt daži bīstamas sekas 50 00:02:34,580 --> 00:02:38,770 ja viena funkcija izmaiņām vērtība ir mainīgs 51 00:02:38,770 --> 00:02:42,360 Pirms jūs gaidīt to mainīt. 52 00:02:42,360 --> 00:02:44,200 >> Kāpēc šī atšķirība ir svarīgi? 53 00:02:44,200 --> 00:02:48,070 Kāpēc mēs rūpējamies, vai dažiem mainīgajiem ir vietējās un citi pasaules? 54 00:02:48,070 --> 00:02:53,880 Nu, lielākā daļa, vietējās mainīgie C ir tas, ko sauc pagājis pēc vērtības 55 00:02:53,880 --> 00:02:56,087 kad mēs veiktu funkciju zvanu. 56 00:02:56,087 --> 00:02:56,920 Ko tas nozīmē? 57 00:02:56,920 --> 00:03:00,880 >> Nu, kad mainīgais tiek nodots pēc vērtības, callee, kas 58 00:03:00,880 --> 00:03:04,350 ir vēl viens veids, kā pateikt funkciju kas saņem mainīgo ka 59 00:03:04,350 --> 00:03:08,465 izpaužas pieņemts kā ieguldījumu, tā faktiski nesaņem šo mainīgo pati. 60 00:03:08,465 --> 00:03:12,490 Tā saņem savu tā kopiju strādāt. 61 00:03:12,490 --> 00:03:14,350 Tas ir ļoti būtiska atšķirība. 62 00:03:14,350 --> 00:03:18,250 Mēs tikko redzējām otrs atpakaļ ka ar globālo mainīgo, 63 00:03:18,250 --> 00:03:23,240 ja mēs manipulēt pasaules mainīgs vienā funkcija, efekts 64 00:03:23,240 --> 00:03:26,390 ar to, ka viens funkcija veic līdz jebkuru citu funkciju. 65 00:03:26,390 --> 00:03:28,920 >> Bet ar vietējās mainīgie, tas nav taisnība. 66 00:03:28,920 --> 00:03:32,060 Katra funkcija, kad to saņem mainīgos kā ievade 67 00:03:32,060 --> 00:03:36,367 saņemt kopijas tiem mainīgajiem, ne paši mainīgie. 68 00:03:36,367 --> 00:03:37,825 Tātad, kas ir blakusparādība, ka? 69 00:03:37,825 --> 00:03:40,450 Tas nozīmē, ka mainīgais zvanītājs, funkcija, kas 70 00:03:40,450 --> 00:03:45,600 ir padarot funkciju zvanu, ir nemainīga, ja vien jūs ignorēt to. 71 00:03:45,600 --> 00:03:50,420 >> Piemēram, šajā kodu foo nav mainījies vispār. 72 00:03:50,420 --> 00:03:55,450 Int foo vienāds ar 4, zvaniet triple no foo, iekšpusē triple, 73 00:03:55,450 --> 00:03:58,850 mēs varētu sagaidīt, ka foo būtu jāreizina ar 3 un atpakaļ, 74 00:03:58,850 --> 00:04:01,450 bet tur tiešām nav spēkā. 75 00:04:01,450 --> 00:04:03,460 >> Te gan, ļoti smalks atšķirība. 76 00:04:03,460 --> 00:04:06,520 Tas tomēr ir sekas mēs gribam. 77 00:04:06,520 --> 00:04:07,730 Vai jūs redzat, kāpēc? 78 00:04:07,730 --> 00:04:11,500 Mēs esam sevišķi svarīgi foo galvenajā šajā laikā. 79 00:04:11,500 --> 00:04:16,899 >> Tātad int foo vienāds 4, foo vienāds triple foo, kad mēs šo aicinājumu, 80 00:04:16,899 --> 00:04:21,680 triple saņem savu eksemplāru par foo, tās kopija 4. 81 00:04:21,680 --> 00:04:27,340 Tajā teikts atgriezties 4 reizes 3, vai neatkarīgi mainīgs izpaužas nodots laikā 3. 82 00:04:27,340 --> 00:04:32,109 Un tad mēs piešķirt atgriešanos vērtība triple uz foo vēlreiz. 83 00:04:32,109 --> 00:04:33,650 Tātad tas patiesībā varētu pārrakstīt foo. 84 00:04:33,650 --> 00:04:35,816 Tas ir vienīgais veids, kā to izdarīt tas ar vietējo mainīgo. 85 00:04:35,816 --> 00:04:38,120 Tāpēc tagad, ja mēs pievienot citu līnija koda šeit 86 00:04:38,120 --> 00:04:40,870 beigās galvenais uz izdrukāt vērtību foo, 87 00:04:40,870 --> 00:04:45,030 tas faktiski izdrukāt 12. 88 00:04:45,030 --> 00:04:48,600 >> Mainīgais joma parasti nav pārāk daudz problēmu 89 00:04:48,600 --> 00:04:51,190 ja varat nosaukt visas jūsu mainīgie dažādas lietas. 90 00:04:51,190 --> 00:04:54,920 Bet tā var iegūt veida šķebinošs ja paša mainīgā nosaukums 91 00:04:54,920 --> 00:04:58,820 parādās vairākas funkcijas, kas notiks daudz. 92 00:04:58,820 --> 00:05:02,130 Ja jūs kādreiz darīt strādāt reālā pasaulē, kur 93 00:05:02,130 --> 00:05:06,080 jūs strādājat sadarbības programmām un cilvēki dažādās komandās 94 00:05:06,080 --> 00:05:11,000 strādā kopā, lai rakstīt to pašu programma vai pats programmu kopums, 95 00:05:11,000 --> 00:05:13,900 viņi bieži atkārtoti mainīgais nosaukumus, jo tie ir izplatīti 96 00:05:13,900 --> 00:05:18,020 piemēram, x, y, I, J, un tā tālāk. 97 00:05:18,020 --> 00:05:20,370 >> Bet, kad mainīgie ir tas pats nosaukums, darbības joma jautājumi 98 00:05:20,370 --> 00:05:23,080 var iegūt mazliet sarežģītāk parsēt. 99 00:05:23,080 --> 00:05:26,790 Piemēram, vai jūs zināt kas būtu izdrukāt 100 00:05:26,790 --> 00:05:30,190 beigās šajā konkrētajā programmas? 101 00:05:30,190 --> 00:05:31,280 Ņemt minūti. 102 00:05:31,280 --> 00:05:33,382 Pauze video un lasīt izmantojot šo programmu. 103 00:05:33,382 --> 00:05:35,590 Jūs varat redzēt augšējā mēs ir funkcija deklarāciju 104 00:05:35,590 --> 00:05:37,350 par funkciju sauc pieaugums. 105 00:05:37,350 --> 00:05:40,800 Šī funkcija aizņem vienu parametrs, vesels skaitlis, ko mēs saucam x. 106 00:05:40,800 --> 00:05:42,610 Un tā rezultāti vesels skaitlis. 107 00:05:42,610 --> 00:05:44,820 Tas ir atgriešanās tips sākumā. 108 00:05:44,820 --> 00:05:48,140 >> Tad mums ir galvenais, pāris līnijas no koda galvenais, pēdējā no kurām 109 00:05:48,140 --> 00:05:49,250 ir drukas paziņojums. 110 00:05:49,250 --> 00:05:51,140 Un atcerieties, tas ir jautājums šeit. 111 00:05:51,140 --> 00:05:54,240 Kas patiesībā būs iespiests beigās šo funkciju? 112 00:05:54,240 --> 00:05:58,110 Un tad mums tiešām ir definīcija pieauguma zemāk. 113 00:05:58,110 --> 00:06:01,760 >> Tātad ņem minūti, soli pa kodu, izsekot lietas. 114 00:06:01,760 --> 00:06:08,100 Vai jūs zināt, kas tiks drukāts uz beigām šo konkrēto programmu? 115 00:06:08,100 --> 00:06:08,600 >> Viss kārtībā. 116 00:06:08,600 --> 00:06:11,433 Cerams, jūs esat veikusi dažas sekundes izmēģināt un apstrādāt šo vienu out. 117 00:06:11,433 --> 00:06:13,370 Darīsim to kopā. 118 00:06:13,370 --> 00:06:16,022 >> Tāpēc es esmu pārsvītrots pieaugums s deklarācija augšpusē tur. 119 00:06:16,022 --> 00:06:17,230 Tā bija sava veida uzmanību. 120 00:06:17,230 --> 00:06:18,570 Tas nav pati mainīgs. 121 00:06:18,570 --> 00:06:19,879 Tas nav savas darbības jomu. 122 00:06:19,879 --> 00:06:21,920 Tas ir tikai funkcija deklarācija, tāpēc vajadzībām 123 00:06:21,920 --> 00:06:24,330 mēģina parsētu kas ir notiek šajā programmā, 124 00:06:24,330 --> 00:06:26,660 mēs varētu arī vienkārši izvairīties no tā. 125 00:06:26,660 --> 00:06:29,560 >> Tagad mēs ir šajā gadījumā Iemesls šī problēma ir grūts 126 00:06:29,560 --> 00:06:34,030 ir tāpēc, ka mums ir vietējie mainīgie gan galvenais un pieauguma, katrs no kuriem 127 00:06:34,030 --> 00:06:35,090 sauc x. 128 00:06:35,090 --> 00:06:39,830 Un, protams būtība šajā jautājumā ir cenšoties Süss, kura x izpaužas mainījies 129 00:06:39,830 --> 00:06:41,890 un kā tas get mainījusies. 130 00:06:41,890 --> 00:06:46,900 Tāpēc es esmu krāsainu katru gadījumu x, kas ir vietējais galvenā sarkanā krāsā. 131 00:06:46,900 --> 00:06:52,040 Un es esmu krāsainu katru gadījumu x, kas ir vietējais pieauguma zils. 132 00:06:52,040 --> 00:06:55,220 >> Paziņojums šajā trešajā rindā Galveno, y vienāds pieaugumu 133 00:06:55,220 --> 00:07:00,800 x, ka pieaugums nav to pagājis galvenais s x, vai sarkanā x. 134 00:07:00,800 --> 00:07:03,320 Tas kļūst izturējis tā kopiju. 135 00:07:03,320 --> 00:07:06,987 Un tas ir tikai dodas uz darbu ar ka tā kopiju, zils x. 136 00:07:06,987 --> 00:07:08,820 Ja jūs esat matemātiski slīpi, jūs varētu 137 00:07:08,820 --> 00:07:14,230 ir nevis domāja par to kā x sub m galveno un x sub I pieauguma. 138 00:07:14,230 --> 00:07:15,700 Bet tas ir tas pats ideja. 139 00:07:15,700 --> 00:07:18,999 x sub m, vai sarkanā x s iepriekšējā slide, 140 00:07:18,999 --> 00:07:21,790 ir mainīgie, kas ir local-- ir instance x gan to, ka 141 00:07:21,790 --> 00:07:26,900 ir vietēja uz galvenais, un x sub i, vai arī zils mainīgie iepriekšējo slaidu, 142 00:07:26,900 --> 00:07:30,760 ir gadījumi, X, kas ir vietējie pieauguma. 143 00:07:30,760 --> 00:07:36,220 >> Tātad, tad tu varētu izdomāt, ko Šī funkcija izdrukāts beigās? 144 00:07:36,220 --> 00:07:39,420 Es esmu Doug Lloyd, un tas ir CS50. 145 00:07:39,420 --> 00:07:41,542