1 00:00:06,650 --> 00:00:09,390 [Powered by Google Translate] JOE MCCORMICK: Dus nu gaan we het hebben over variabelen. 2 00:00:09,390 --> 00:00:13,270 Variabelen in de informatica zijn een manier om een ​​waarde op te slaan. 3 00:00:13,270 --> 00:00:14,980 Nu, wat en hoe we slaan dat 4 00:00:14,980 --> 00:00:16,210 waarde is niet te belangrijk. 5 00:00:16,210 --> 00:00:19,780 We kunnen een waarde die is een woord, dat zou kunnen 6 00:00:19,780 --> 00:00:21,170 opgeslagen als een string. 7 00:00:21,170 --> 00:00:23,160 Of we kunnen iets dat is een personage, 8 00:00:23,160 --> 00:00:24,110 als de letter een. 9 00:00:24,110 --> 00:00:26,420 En dat zou worden opgeslagen als een char. 10 00:00:26,420 --> 00:00:29,660 We kunnen een aantal, zoals een of 12, dat zou 11 00:00:29,660 --> 00:00:32,310 opgeslagen als een geheel getal of een int. 12 00:00:32,310 --> 00:00:35,940 Dan hebben we verschillende dingen zoals een vlotter, die kunnen worden opgeslagen 13 00:00:35,940 --> 00:00:41,700 dingen als 1.01 of 111,13. 14 00:00:41,700 --> 00:00:43,530 Deze waarden zijn altijd veranderlijk genoemd. 15 00:00:43,530 --> 00:00:46,490 Dit betekent dat als we de opgeslagen nummer een in een geheel getal op 16 00:00:46,490 --> 00:00:49,490 de top van een programma later we dat aantal veranderen 17 00:00:49,490 --> 00:00:51,460 drie of zeven. 18 00:00:51,460 --> 00:00:53,890 Nu, een lokale variabele is wat je meestal tegenkomt, 19 00:00:53,890 --> 00:00:55,250 bij het uitvoeren van een functie. 20 00:00:55,250 --> 00:00:57,260 Dus laten we zeggen dat je in je belangrijkste functie. 21 00:00:57,260 --> 00:00:59,910 En je wilt een variabele met de naam num te creëren. 22 00:00:59,910 --> 00:01:01,240 En we slaan een geheel getal in. 23 00:01:01,240 --> 00:01:04,680 Dus we kunnen zeggen iets als int num = 3. 24 00:01:04,680 --> 00:01:05,319 Nu, daar ga je. 25 00:01:05,319 --> 00:01:06,830 Je hebt een lokale variabele. 26 00:01:06,830 --> 00:01:09,670 Nu kan deze variabele later worden veranderd in de belangrijkste 27 00:01:09,670 --> 00:01:13,700 functie, door iets te zeggen als num = 6 of num = 7. 28 00:01:13,700 --> 00:01:15,940 Maar uw variabele zit vast in het 29 00:01:15,940 --> 00:01:18,320 werkingssfeer van die functie. 30 00:01:18,320 --> 00:01:21,690 En de omvang begint meestal met de accolade bij de 31 00:01:21,690 --> 00:01:23,990 het begin van de hoofd-en eindigt met de accolade die 32 00:01:23,990 --> 00:01:26,230 sluit de belangrijkste functie. 33 00:01:26,230 --> 00:01:29,610 En deze lokale variabele wordt nu vast in dit kader. 34 00:01:29,610 --> 00:01:32,200 Zodat er niet langer toegankelijk in een andere functie, 35 00:01:32,200 --> 00:01:33,950 buiten de hoofdfunctie. 36 00:01:33,950 --> 00:01:36,230 En zodra de belangrijkste functie beëindigt de uitvoering ervan en 37 00:01:36,230 --> 00:01:40,460 terugkeert, wordt deze lokale variabele met de naam num verdwenen. 38 00:01:40,460 --> 00:01:42,760 Dus in tegenstelling tot lokale variabelen, we iets 39 00:01:42,760 --> 00:01:43,970 genoemd globale variabelen. 40 00:01:43,970 --> 00:01:46,890 Nu wordt een globale variabele aangegeven bovenaan de 41 00:01:46,890 --> 00:01:49,860 programma en kan overal worden geopend in het programma. 42 00:01:49,860 --> 00:01:51,805 Dus laten we zeggen dat je uitgeroepen tot een globale variabele aan de bovenkant van 43 00:01:51,805 --> 00:01:53,200 uw programma, genaamd test. 44 00:01:53,200 --> 00:01:54,990 Nu kan deze variabele toegankelijk 45 00:01:54,990 --> 00:01:56,000 overal in het programma. 46 00:01:56,000 --> 00:01:58,230 Je zou kunnen toegang krijgen tot het in je hoofd functie of een functie 47 00:01:58,230 --> 00:01:59,300 daaronder. 48 00:01:59,300 --> 00:02:02,210 Maar als je ooit naar een lokale variabele te maken te proberen in een van de 49 00:02:02,210 --> 00:02:04,170 deze functies, met dezelfde naam als 50 00:02:04,170 --> 00:02:05,880 test, is er een conflict. 51 00:02:05,880 --> 00:02:07,720 Omdat je niet weet welke variabele die u wilt gebruiken. 52 00:02:07,720 --> 00:02:09,039 Wilt u de globale test te gebruiken, 53 00:02:09,039 --> 00:02:10,910 verklaarde aan de top programma? 54 00:02:10,910 --> 00:02:12,495 Of wil je de lokale variabele test die gebruik maken van 55 00:02:12,495 --> 00:02:14,920 je probeert te creëren binnen deze functie? 56 00:02:14,920 --> 00:02:16,700 Nu, dit is een van de redenen waarom we niet willen 57 00:02:16,700 --> 00:02:18,960 gewoon gratis gebruik maken van globale variabelen. 58 00:02:18,960 --> 00:02:21,570 Er is iets genaamd verrommeling van de naam ruimte. 59 00:02:21,570 --> 00:02:23,940 Zelfs als je wil niet, kunt u per ongeluk een 60 00:02:23,940 --> 00:02:26,270 lokale variabele, later in het programma, met dezelfde 61 00:02:26,270 --> 00:02:28,140 naam als de globale variabele. 62 00:02:28,140 --> 00:02:30,130 En dit vormt geen groot probleem als je werkt in 63 00:02:30,130 --> 00:02:33,120 kleine 10, 20, 30-line programma's. 64 00:02:33,120 --> 00:02:35,520 Zodra u tot duizenden regels code, dat doe je niet 65 00:02:35,520 --> 00:02:38,740 weet nog precies wat u hebt opgeslagen voor globale variabele. 66 00:02:38,740 --> 00:02:41,000 Dus een ding om te overwegen, bij het gebruik van lokale en globale 67 00:02:41,000 --> 00:02:43,570 variabelen is om na te denken over hun bereik. 68 00:02:43,570 --> 00:02:47,270 Nu toepassingsgebied betreft waar deze waarden worden gebruikt in 69 00:02:47,270 --> 00:02:48,500 het programma. 70 00:02:48,500 --> 00:02:51,080 Dus een globale variabele is wat mondiale reikwijdte heet, 71 00:02:51,080 --> 00:02:53,820 betekent dat het kan overal worden gebruikt in het programma. 72 00:02:53,820 --> 00:02:56,860 Zodra u initialiseren die variabele, kan het worden gebruikt in 73 00:02:56,860 --> 00:03:00,530 elke functie, of het nu de belangrijkste functie of een 74 00:03:00,530 --> 00:03:03,780 functie 10 functies neer, riep foo10. 75 00:03:03,780 --> 00:03:05,160 Het maakt niet uit waar je het gebruikt. 76 00:03:05,160 --> 00:03:07,490 Maar een lokale variabele heeft specifieke toepassingsgebied. 77 00:03:07,490 --> 00:03:09,800 En de reikwijdte van die lokale variabele wordt bepaald door 78 00:03:09,800 --> 00:03:11,030 waar het geïnitialiseerd. 79 00:03:11,030 --> 00:03:13,680 Nu wordt het toepassingsgebied gewoonlijk bepaald door de opening 80 00:03:13,680 --> 00:03:16,540 brace van de functie die de variabele wordt gedeclareerd in, totdat 81 00:03:16,540 --> 00:03:18,300 het sluiten van brace van die functie. 82 00:03:18,300 --> 00:03:19,730 Dus laten we zeggen dat je in de main functie. 83 00:03:19,730 --> 00:03:21,410 En maakt u een variabele. 84 00:03:21,410 --> 00:03:23,110 Maar nu, in deze belangrijkste functie, noemen we een andere 85 00:03:23,110 --> 00:03:24,640 functioneren foo. 86 00:03:24,640 --> 00:03:27,070 In de functie foo, kunnen we niet bellen met de variabele die we net 87 00:03:27,070 --> 00:03:29,940 gemaakt in de belangrijkste functie omdat het niet in omvang. 88 00:03:29,940 --> 00:03:33,410 Deze variabele is alleen in strekking zijn in de belangrijkste functie. 89 00:03:33,410 --> 00:03:36,540 Dus we konden gebruiken verderop in de belangrijkste functie, maar 90 00:03:36,540 --> 00:03:40,650 niet binnen een functie die wordt aangeroepen vanuit de hoofdfunctie. 91 00:03:40,650 --> 00:03:43,390 Dus net als de stack en de heap, globale variabelen zijn 92 00:03:43,390 --> 00:03:45,580 opgeslagen in een bepaald gedeelte van het geheugen. 93 00:03:45,580 --> 00:03:47,665 Nu, dit deel van het geheugen is afhankelijk van het systeem dat 94 00:03:47,665 --> 00:03:48,490 dat u gebruikt. 95 00:03:48,490 --> 00:03:50,840 De globale variabelen hebben twee verschillende plaatsen dat ze 96 00:03:50,840 --> 00:03:54,570 opgeslagen, een voor globale variabelen geïnitialiseerd, bijvoorbeeld als 97 00:03:54,570 --> 00:03:58,130 je had verklaard int test = 5, aan de bovenkant van uw programma. 98 00:03:58,130 --> 00:04:01,010 En het andere gebied is voor unitialized globale variabelen, 99 00:04:01,010 --> 00:04:03,190 Als je net zei, int test, aan de bovenkant van uw programma en 100 00:04:03,190 --> 00:04:05,040 zou de test variabelen instellen 101 00:04:05,040 --> 00:04:07,626 later in het programma. 102 00:04:07,626 --> 00:04:10,140 Dus nu ga ik het hebben over iets genaamd # define, 103 00:04:10,140 --> 00:04:13,380 Dit is een manier om een ​​symbolische naam geven aan een constant. 104 00:04:13,380 --> 00:04:17,420 En hier hebben we een voorbeeld van een C programma dat berekent 105 00:04:17,420 --> 00:04:19,470 de oppervlakte van een cirkel. 106 00:04:19,470 --> 00:04:21,690 En aan de bovenkant van het programma doen we iets dat zegt 107 00:04:21,690 --> 00:04:25,830 # Define pi 3,14159. 108 00:04:25,830 --> 00:04:29,330 # Define technisch gezien niet een globale variabele. 109 00:04:29,330 --> 00:04:31,590 Het vertelt de compiler preprocessor 110 00:04:31,590 --> 00:04:34,350 vinden en alle exemplaren van pi te vervangen door 111 00:04:34,350 --> 00:04:37,540 3,14159 voordat je compileert. 112 00:04:37,540 --> 00:04:39,830 Niettemin wordt een handige techniek te verklaren 113 00:04:39,830 --> 00:04:41,510 constanten, voor gebruik gedurende de gehele programmaperiode. 114 00:04:41,510 --> 00:04:44,540 Nu naar de oppervlaktefunctie, neemt in een vlotter 115 00:04:44,540 --> 00:04:48,150 rad en retourneert alleen de oppervlakte van een cirkel met die 116 00:04:48,150 --> 00:04:52,920 radius-of pi r kwadraat, of pi maal rad keer rad. 117 00:04:52,920 --> 00:04:56,040 En dit is waar de # define speelt een belangrijke rol. 118 00:04:56,040 --> 00:04:59,270 Omdat de compiler zal principe in de plaats dat pi 119 00:04:59,270 --> 00:05:02,780 symbool met het nummer 3,14159. 120 00:05:02,780 --> 00:05:05,560 En dus hebben we niet om die schrijven over en weer. 121 00:05:05,560 --> 00:05:08,900 En later, als we besluiten om een ​​meer cijfers van pi te gebruiken, laten we 122 00:05:08,900 --> 00:05:12,800 zeggen 3.1415926, we konden alleen maar toevoegen dat naar de top van de 123 00:05:12,800 --> 00:05:14,330 programma en niet zou hebben om het te veranderen, 124 00:05:14,330 --> 00:05:16,160 later in het programma. 125 00:05:16,160 --> 00:05:18,240 Dit is een goed gebruik van # define. 126 00:05:18,240 --> 00:05:20,520 We willen niet pi opslaan als een globale variabele, omdat het 127 00:05:20,520 --> 00:05:21,780 kan later wijzigen in het programma. 128 00:05:21,780 --> 00:05:23,430 En we weten pi verandert niet. 129 00:05:23,430 --> 00:05:25,650 Het is een constante. 130 00:05:25,650 --> 00:05:28,120 Dus dit rondt ons onderwerp van globale variabelen. 131 00:05:28,120 --> 00:05:29,930 Dus vandaag hebben we gesproken over het verschil tussen lokale en 132 00:05:29,930 --> 00:05:32,490 globale variabelen, wanneer ze te gebruiken, afhankelijk van hun 133 00:05:32,490 --> 00:05:36,660 omvang, en waarom niet om globale variabelen te gebruiken naar believen 134 00:05:36,660 --> 00:05:39,360 als gevolg van verrommeling van de naam ruimte. 135 00:05:39,360 --> 00:05:40,270 Ik ben Joe McCormick. 136 00:05:40,270 --> 00:05:42,290 En dit is CS50.