1 00:00:06,650 --> 00:00:09,390 [Powered by Google Translate] JOE MCCORMICK: Most fogunk beszélni változók. 2 00:00:09,390 --> 00:00:13,270 Változók a számítástechnikában egy módja annak, hogy tárolja az értéket. 3 00:00:13,270 --> 00:00:14,980 Nos, mit és hogyan tároljuk, hogy a 4 00:00:14,980 --> 00:00:16,210 érték nem túl fontos. 5 00:00:16,210 --> 00:00:19,780 Mi lehet olyan érték, amely egy szó, amely 6 00:00:19,780 --> 00:00:21,170 kell tárolni, mint egy húr. 7 00:00:21,170 --> 00:00:23,160 Vagy mi lehetett volna valamit, ami egy karaktert, 8 00:00:23,160 --> 00:00:24,110 mint a levél a. 9 00:00:24,110 --> 00:00:26,420 És ez kellene tárolni, mint egy char. 10 00:00:26,420 --> 00:00:29,660 Jelenleg is számos, mint egy vagy 12, az lenne 11 00:00:29,660 --> 00:00:32,310 tárolt egy egész szám vagy egy int. 12 00:00:32,310 --> 00:00:35,940 Aztán, már különböző dolgokat, mint egy úszó, amely képes tárolni 13 00:00:35,940 --> 00:00:41,700 dolgok, mint a 1,01, illetve 111,13. 14 00:00:41,700 --> 00:00:43,530 Ezek az értékek mindig hívják változékony. 15 00:00:43,530 --> 00:00:46,490 Azt jelenti, hogy ha a tárolt szám egy olyan egész szám a 16 00:00:46,490 --> 00:00:49,490 a tetején a program később tudtuk változtatni szám 17 00:00:49,490 --> 00:00:51,460 három vagy hét. 18 00:00:51,460 --> 00:00:53,890 Most, egy lokális változó mit fogsz jellemzően találkozás, 19 00:00:53,890 --> 00:00:55,250 végrehajtása során a funkciót. 20 00:00:55,250 --> 00:00:57,260 Tehát mondjuk te belül a fő funkciója. 21 00:00:57,260 --> 00:00:59,910 És azt akarod, hogy hozzon létre egy változót nevű tel. 22 00:00:59,910 --> 00:01:01,240 És mi tároljuk integer benne. 23 00:01:01,240 --> 00:01:04,680 Így azt mondhatjuk, valami hasonlót int num = 3. 24 00:01:04,680 --> 00:01:05,319 Nos, tessék. 25 00:01:05,319 --> 00:01:06,830 Van egy helyi változót. 26 00:01:06,830 --> 00:01:09,670 Nos, ezt a változót lehet változtatni később a fő 27 00:01:09,670 --> 00:01:13,700 funkciót, mondván valami ilyesmit num = 6 vagy num = 7. 28 00:01:13,700 --> 00:01:15,940 De a változó beragadt a 29 00:01:15,940 --> 00:01:18,320 hatálya alá ezt a funkciót. 30 00:01:18,320 --> 00:01:21,690 És a hatálya általában kezdődik a kapcsos zárójel a 31 00:01:21,690 --> 00:01:23,990 elején a fő-és végződik a kapcsos zárójel, hogy 32 00:01:23,990 --> 00:01:26,230 zárja ki a fő funkciója. 33 00:01:26,230 --> 00:01:29,610 És ez a lokális változó most megakadt ezen alkalmazási körön belül. 34 00:01:29,610 --> 00:01:32,200 Így már nem lehet hozzáférni egy másik funkció, 35 00:01:32,200 --> 00:01:33,950 kívül a fő funkció. 36 00:01:33,950 --> 00:01:36,230 És ha egyszer a fő funkciója befejezi a végrehajtás és a 37 00:01:36,230 --> 00:01:40,460 visszatér, ez a lokális változó nevű tel elment. 38 00:01:40,460 --> 00:01:42,760 Tehát ellentétben a lokális változók, van valami 39 00:01:42,760 --> 00:01:43,970 úgynevezett globális változók. 40 00:01:43,970 --> 00:01:46,890 Most, egy globális változó nyilvánított tetején a 41 00:01:46,890 --> 00:01:49,860 program elérhető bárhol a programban. 42 00:01:49,860 --> 00:01:51,805 Tehát mondjuk bejelentett egy globális változót a tetején 43 00:01:51,805 --> 00:01:53,200 a program, az úgynevezett teszt. 44 00:01:53,200 --> 00:01:54,990 Nos, ezt a változót lehetne elérni, 45 00:01:54,990 --> 00:01:56,000 bárhol a programban. 46 00:01:56,000 --> 00:01:58,230 Lehet elérheti a fő funkció vagy funkció 47 00:01:58,230 --> 00:01:59,300 alá. 48 00:01:59,300 --> 00:02:02,210 De ha valaha is megpróbál létrehozni egy helyi változót az egyik 49 00:02:02,210 --> 00:02:04,170 ezeket a funkciókat, a neve megegyezik 50 00:02:04,170 --> 00:02:05,880 vizsgálat, van egy konfliktus. 51 00:02:05,880 --> 00:02:07,720 Mert nem tudja, hogy melyik változót szeretnénk használni. 52 00:02:07,720 --> 00:02:09,039 Szeretné használni a globális vizsgálat 53 00:02:09,039 --> 00:02:10,910 nyilvánította a csúcson program? 54 00:02:10,910 --> 00:02:12,495 Vagy szeretnéd használni a helyi változó teszt 55 00:02:12,495 --> 00:02:14,920 akarsz létrehozni ezen a funkciót? 56 00:02:14,920 --> 00:02:16,700 Nos, ez az egyik oka annak, hogy nem akarjuk, hogy 57 00:02:16,700 --> 00:02:18,960 csak használja globális változók szabadon. 58 00:02:18,960 --> 00:02:21,570 Van valami, amit az úgynevezett túlzsúfoltság a név tér. 59 00:02:21,570 --> 00:02:23,940 Akkor is, ha nem akarok, akkor véletlenül létre 60 00:02:23,940 --> 00:02:26,270 lokális változó, később a programban, az azonos 61 00:02:26,270 --> 00:02:28,140 név, mint a globális változót. 62 00:02:28,140 --> 00:02:30,130 És ez nem jelent nagy problémát, ha éppen dolgozik 63 00:02:30,130 --> 00:02:33,120 kicsi 10, 20, 30-vonal programok. 64 00:02:33,120 --> 00:02:35,520 Ha már akár több ezer sornyi kódot, akkor nem fog 65 00:02:35,520 --> 00:02:38,740 emlékszem, hogy pontosan mit tárolt a globális változót. 66 00:02:38,740 --> 00:02:41,000 Tehát az egyik dolog, hogy fontolja meg, amikor a helyi és globális 67 00:02:41,000 --> 00:02:43,570 változók gondolkodni annak hatályát. 68 00:02:43,570 --> 00:02:47,270 Most hatálya vonatkozik, ahol ezeket a változókat lehet használni 69 00:02:47,270 --> 00:02:48,500 a programot. 70 00:02:48,500 --> 00:02:51,080 Tehát egy globális változó az úgynevezett globális hatókörű, 71 00:02:51,080 --> 00:02:53,820 értelmezni, hogy fel lehet használni bárhol a programban. 72 00:02:53,820 --> 00:02:56,860 Ha inicializálni a változót, akkor lehet használni a 73 00:02:56,860 --> 00:03:00,530 minden funkció, függetlenül attól, hogy a fő funkciója, vagy 74 00:03:00,530 --> 00:03:03,780 funkció 10 funkció le, az úgynevezett foo10. 75 00:03:03,780 --> 00:03:05,160 Nem számít, hol használjuk. 76 00:03:05,160 --> 00:03:07,490 De egy helyi változó konkrét hatályáról. 77 00:03:07,490 --> 00:03:09,800 És hatályát helyi változó határozza meg 78 00:03:09,800 --> 00:03:11,030 ahol inicializáljuk. 79 00:03:11,030 --> 00:03:13,680 Most, a hatály jellemzően határozza meg a nyitó 80 00:03:13,680 --> 00:03:16,540 zárójel a funkció, hogy a változó bejelentett, amíg 81 00:03:16,540 --> 00:03:18,300 záró zárójel e funkciót. 82 00:03:18,300 --> 00:03:19,730 Tehát mondjuk te vagy a fő funkciója. 83 00:03:19,730 --> 00:03:21,410 És létrehoz egy változót. 84 00:03:21,410 --> 00:03:23,110 De most, ezen belül a fő funkciója, hívjuk másik 85 00:03:23,110 --> 00:03:24,640 function ize. 86 00:03:24,640 --> 00:03:27,070 A function ize, nem tudjuk hívni a változó már csak 87 00:03:27,070 --> 00:03:29,940 létre a fő funkciója, mert ez nem a hatályát. 88 00:03:29,940 --> 00:03:33,410 Ez a változó csak a hatálya alá tartozó a fő funkciója. 89 00:03:33,410 --> 00:03:36,540 Így tudtuk használni tovább, a fő funkciója, de a 90 00:03:36,540 --> 00:03:40,650 belül nem egy függvény, hogy hívják a fő funkciója. 91 00:03:40,650 --> 00:03:43,390 Szóval, mint a stack és a heap globális változók 92 00:03:43,390 --> 00:03:45,580 tárolt egy bizonyos részében a memória. 93 00:03:45,580 --> 00:03:47,665 Nos, ez a része a memória függ a rendszer 94 00:03:47,665 --> 00:03:48,490 Ön használ. 95 00:03:48,490 --> 00:03:50,840 A globális változók esetében két különböző helyeken, hogy ők 96 00:03:50,840 --> 00:03:54,570 tárolt, egy a inicializált globális változók, mint mintha 97 00:03:54,570 --> 00:03:58,130 Ön kijelentette, int teszt = 5, a tetején a program. 98 00:03:58,130 --> 00:04:01,010 A másik terület a unitialized globális változók, 99 00:04:01,010 --> 00:04:03,190 ha csak azt mondta, int teszt, a tetején a program, és 100 00:04:03,190 --> 00:04:05,040 volt, hogy állítsa be a vizsgálati változók 101 00:04:05,040 --> 00:04:07,626 később a programban. 102 00:04:07,626 --> 00:04:10,140 Tehát most fogok beszélni valami úgynevezett # define, 103 00:04:10,140 --> 00:04:13,380 amely egy módja annak, hogy egy szimbolikus nevet egy konstans. 104 00:04:13,380 --> 00:04:17,420 És itt van egy példa egy C program kiszámolja 105 00:04:17,420 --> 00:04:19,470 a terület a kör. 106 00:04:19,470 --> 00:04:21,690 És a tetején a program fogjuk tenni valamit, hogy azt mondja 107 00:04:21,690 --> 00:04:25,830 # Define pi 3,14159. 108 00:04:25,830 --> 00:04:29,330 # Define technikailag nem hoz létre egy globális változót. 109 00:04:29,330 --> 00:04:31,590 Inkább azt mondja a fordító által előfeldolgozó a 110 00:04:31,590 --> 00:04:34,350 keresés és csere minden esetben a pi-vel 111 00:04:34,350 --> 00:04:37,540 3,14159 fordítás előtt. 112 00:04:37,540 --> 00:04:39,830 Mindazonáltal, ez lesz hasznos technika nyilvánító 113 00:04:39,830 --> 00:04:41,510 állandók, használata az egész programot. 114 00:04:41,510 --> 00:04:44,540 Most néztem a terület funkciót, akkor vesz egy úszó 115 00:04:44,540 --> 00:04:48,150 rad, és egyszerűen visszaadja a területet a kör, amely 116 00:04:48,150 --> 00:04:52,920 sugár vagy pi r kockás, vagy pi szer rad alkalommal rad. 117 00:04:52,920 --> 00:04:56,040 És ez az, ahol a # define kulcsfontosságú szerepet játszik. 118 00:04:56,040 --> 00:04:59,270 Mivel a fordító alapvetően helyettesíti, hogy a PI 119 00:04:59,270 --> 00:05:02,780 szimbólum a szám 3,14159. 120 00:05:02,780 --> 00:05:05,560 És így nem kell írni, hogy újra és újra. 121 00:05:05,560 --> 00:05:08,900 És később, ha úgy döntünk, hogy egy több számjegy a pi, hadd 122 00:05:08,900 --> 00:05:12,800 mondjuk 3.1415926, mi is csak hozzá, hogy a tetején a 123 00:05:12,800 --> 00:05:14,330 programot, és nem kell megváltoztatni, 124 00:05:14,330 --> 00:05:16,160 később a programban. 125 00:05:16,160 --> 00:05:18,240 Ez egy jó felhasználása # define. 126 00:05:18,240 --> 00:05:20,520 Nem akarjuk tárolni pi globális változót, mert 127 00:05:20,520 --> 00:05:21,780 megváltozhat később a program. 128 00:05:21,780 --> 00:05:23,430 És tudjuk, hogy a PI nem változik. 129 00:05:23,430 --> 00:05:25,650 Ez egy állandó. 130 00:05:25,650 --> 00:05:28,120 Szóval ez a pakolások fel témánk a globális változók. 131 00:05:28,120 --> 00:05:29,930 Szóval ma beszéltünk a különbség a helyi és 132 00:05:29,930 --> 00:05:32,490 globális változók, hogy mikor kell használni őket, attól függően, hogy 133 00:05:32,490 --> 00:05:36,660 hatálya alá, és miért nem használja globális változókat tetszés 134 00:05:36,660 --> 00:05:39,360 mert a túlzsúfoltság a név tér. 135 00:05:39,360 --> 00:05:40,270 Én vagyok Joe McCormick. 136 00:05:40,270 --> 00:05:42,290 És ez CS50.