1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Functies zijn delen van de code die wordt gebruikt binnen een groter programma 2 00:00:09,640 --> 00:00:11,430 om een ​​bepaalde taak uit te voeren. 3 00:00:11,430 --> 00:00:15,060 Ze zijn ook bekend als procedures, subroutines, en subprogramma's, 4 00:00:15,060 --> 00:00:18,320 omdat ze eigenlijk gewoon mini-programma's binnen de programma's. 5 00:00:18,320 --> 00:00:20,340 Ook al heb je misschien niet hebben gemerkt, 6 00:00:20,340 --> 00:00:24,090 u zeker zijn gebruikte functies al als je nog geprogrammeerd in C. 7 00:00:24,090 --> 00:00:26,770 Als je spullen te schrijven naar het scherm met behulp van printf, 8 00:00:26,770 --> 00:00:29,380 je eigenlijk een functie printf genoemd. 9 00:00:29,380 --> 00:00:33,760 Ook GetInt en GetString zijn functies die CS50 biedt voor u. 10 00:00:33,760 --> 00:00:37,750 Als programmeurs, gebruiken we functies voor een aantal redenen. 11 00:00:37,750 --> 00:00:41,240 >> Na functies om gemeenschappelijke taken uit te voeren zoals het schrijven naar het scherm 12 00:00:41,240 --> 00:00:44,480 en vragen aan de gebruiker om invoer bespaart ons tijd bij het programmeren. 13 00:00:44,480 --> 00:00:47,510 Het is niet nodig om code te schrijven die dezelfde dingen te doen 14 00:00:47,510 --> 00:00:49,520 omdat ze al voor ons gedaan. 15 00:00:49,520 --> 00:00:54,580 Het is zelfs niet nodig voor ons om te begrijpen hoe die functies intern werken. 16 00:00:54,580 --> 00:00:58,880 In plaats daarvan, we hoeven alleen maar te weten hoe te gebruiken of hen te bellen in onze programma's. 17 00:00:58,880 --> 00:01:02,040 Het is ook handig om functies te schrijven in grotere programma's 18 00:01:02,040 --> 00:01:04,330 zelfs als u niet van plan bent op het hebben van anderen gebruiken, 19 00:01:04,330 --> 00:01:06,830 alleen maar om de verdeling van de grotere taak bij de hand. 20 00:01:06,830 --> 00:01:11,910 Op deze manier geef je structuur aan in uw code net als je zou structuur te geven aan een essay, 21 00:01:11,910 --> 00:01:15,180 en met echt grote projecten u de pagina toestaat meerdere mensen 22 00:01:15,180 --> 00:01:16,730 te werken op verschillende onderdelen tegelijk 23 00:01:16,730 --> 00:01:20,480 want het is duidelijk waar de ene persoon het werk eindigt en een ander is begint. 24 00:01:20,480 --> 00:01:26,530 >> Functies werken meestal op 1 of meer ingangen, die bekend staat als argumenten of parameters, 25 00:01:26,530 --> 00:01:30,520 transformeren die ingangen naar een uitgang van de waarde die vervolgens wordt geretourneerd. 26 00:01:30,520 --> 00:01:34,950 Echter, het is ook mogelijk om functies die geen gebruik maken van een input argumenten 27 00:01:34,950 --> 00:01:36,400 en niet terug een uitgang. 28 00:01:36,400 --> 00:01:38,790 Oke, genoeg met de pluizige spul. 29 00:01:38,790 --> 00:01:41,790 Laten we eens een kijkje nemen op een aantal reële functies in C. 30 00:01:41,790 --> 00:01:45,570 >> Hier hebben we een functie genaamd plein dat, geloof het of niet, 31 00:01:45,570 --> 00:01:47,570 berekent het kwadraat van de input. 32 00:01:47,570 --> 00:01:49,490 Laten we ontleden de syntaxis van het. 33 00:01:49,490 --> 00:01:51,860 Het eerste woord dat u ziet in de functie, int, 34 00:01:51,860 --> 00:01:57,460 specificeert het return type van de functie, dat wil zeggen het C type uitvoer van de functie. 35 00:01:57,460 --> 00:02:00,370 Deze functie zal uitvoeren een waarde met type int. 36 00:02:00,370 --> 00:02:04,100 Het volgende woord dat u ziet, is de naam van de functie, vierkant in dit geval. 37 00:02:04,100 --> 00:02:07,390 Benoemen van functies op de juiste wijze is met name van belang 38 00:02:07,390 --> 00:02:11,260 want het is waarschijnlijk de meest zichtbare documentatie van wat de functie doet. 39 00:02:11,260 --> 00:02:14,880 Het is misschien leuk om deze functie te shazam of Booyah noemen, 40 00:02:14,880 --> 00:02:18,340 maar dat zou ons niet vertellen niets over wat de functie doet. 41 00:02:18,340 --> 00:02:23,470 >> Naar aanleiding van de functienaam de ingangen komen om de functie, de argumenten. 42 00:02:23,470 --> 00:02:26,380 Ze staan ​​in een stel haakjes 43 00:02:26,380 --> 00:02:30,160 zowel hun type en een naam voor ze binnen het lichaam van de functie. 44 00:02:30,160 --> 00:02:34,030 Vierkante duurt slechts 1 argument, de int naar plein, 45 00:02:34,030 --> 00:02:36,160 die ik heb besloten om de naam x geven. 46 00:02:36,160 --> 00:02:40,760 Dit beëindigt de functie declaratie of prototype. 47 00:02:40,760 --> 00:02:43,320 De accolades rond de rest van de functie 48 00:02:43,320 --> 00:02:45,870 duiden het begin en einde van de functie lichaam, 49 00:02:45,870 --> 00:02:48,320 de definitie van de functie zelf. 50 00:02:48,320 --> 00:02:50,300 Square is een vrij eenvoudige functie. 51 00:02:50,300 --> 00:02:54,100 Het heeft maar 1 regel, omdat alles wat we moeten doen is vermenigvuldigen x op zichzelf. 52 00:02:54,100 --> 00:02:59,250 Het woord rendement geeft de uitgangswaarde en activeert het einde van de functie. 53 00:02:59,250 --> 00:03:03,430 Om het plein functie te gebruiken, moeten we de juiste ingangen leveren 54 00:03:03,430 --> 00:03:05,310 en leg de uitgang. 55 00:03:05,310 --> 00:03:08,140 Hier zie je een paar manieren om dat te doen. 56 00:03:08,140 --> 00:03:13,600 We kunnen passeren in een rauwe int, zoals 6, of we kunnen passeren in een variabele als een. 57 00:03:13,600 --> 00:03:15,700 Merk op dat elke keer dat we vierkant noemen, 58 00:03:15,700 --> 00:03:18,330 We vangen de output in een variabele en vervolgens afdrukken. 59 00:03:18,330 --> 00:03:22,690 Echter, we hebben niet de terugkeer waarde in een variabele op te slaan en af ​​te drukken. 60 00:03:22,690 --> 00:03:27,090 We konden gewoon direct naar printf zoals wij dat doen als we square 10, 61 00:03:27,090 --> 00:03:30,580 maar dit betekent wel dat we geen toegang hebben tot de return waarde van de vierkante 10 hebben 62 00:03:30,580 --> 00:03:32,230 elders in de code. 63 00:03:32,230 --> 00:03:34,890 Laten we eens kijken naar een ander eenvoudig voorbeeld. 64 00:03:34,890 --> 00:03:38,750 >> Deze keer zullen we samenvatten 2 praalwagens elkaar, zodat we kunnen zien wat een functie eruit ziet 65 00:03:38,750 --> 00:03:41,220 wanneer het heeft 2 ingangen in plaats van 1. 66 00:03:41,220 --> 00:03:43,950 Zoals je kunt zien, het is niet veel anders. 67 00:03:43,950 --> 00:03:47,330 Alles wat we doen is het toevoegen in de 2e argument, een vlotter met de naam b, 68 00:03:47,330 --> 00:03:51,820 om de lijst met argumenten met een komma te scheiden van het eerste argument, drijven een. 69 00:03:51,820 --> 00:03:55,550 Dus, onze plein en som functies zijn vrij gemakkelijk te begrijpen 70 00:03:55,550 --> 00:03:58,930 omdat ze gelijk aan functies die u eerder hebt in wiskunde klas gezien. 71 00:03:58,930 --> 00:04:01,610 Laten we nu eens kijken naar een functie die is iets anders. 72 00:04:01,610 --> 00:04:04,620 In plaats van een waarde, het wijzigt een staat. 73 00:04:04,620 --> 00:04:07,260 Dit staat bekend als een bijwerking. 74 00:04:07,260 --> 00:04:10,750 In dit programma, de printf_fudd_style functie 75 00:04:10,750 --> 00:04:13,410 heeft een return type dat we niet eerder hebben, ongeldig gezien. 76 00:04:13,410 --> 00:04:16,730 >> Void wordt gebruikt om te zeggen dat een functie niet iets terug. 77 00:04:16,730 --> 00:04:19,410 Er zijn geen variabelen van het type leegte, 78 00:04:19,410 --> 00:04:22,760 dus als je probeert om iets terug van een functie als printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 de compiler zal schreeuwen naar je. 80 00:04:24,290 --> 00:04:29,390 Binnen printf_fudd_style, zien we dat, terwijl nog steeds de functie een taak uitvoert, 81 00:04:29,390 --> 00:04:31,890 namelijk alle Rs schakelen naar Ws, 82 00:04:31,890 --> 00:04:36,380 het punt van de functie is om een ​​string te wijzigen en af ​​te drukken op het scherm, 83 00:04:36,380 --> 00:04:39,400 veranderen van de toestand van het programma in plaats van dat een resultaat. 84 00:04:39,400 --> 00:04:43,700 Met behulp van deze functie lijkt sterk op het gebruik van onze plein en som functies, 85 00:04:43,700 --> 00:04:46,950 behalve wij het resultaat niet op te slaan in een variabele of het af naar een andere functie 86 00:04:46,950 --> 00:04:49,520 aangezien er geen resultaat naar van spreken. 87 00:04:49,520 --> 00:04:53,180 Dus, als we compileren en uit te voeren onze Elmer Fudd programma, 88 00:04:53,180 --> 00:04:56,970 zie je dat "U rascally konijn!" wordt getransformeerd recht op 89 00:04:56,970 --> 00:04:58,730 "Je Wascally Wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Ten slotte is er is nog 1 functie een discussie waard 91 00:05:02,250 --> 00:05:06,810 omdat je hebt gebruikt het in elk C programma die je ooit hebt geschreven, de belangrijkste. 92 00:05:06,810 --> 00:05:09,450 Belangrijkste is een functie net als alle andere. 93 00:05:09,450 --> 00:05:13,580 Het heeft een return type, een naam, een lijst met argumenten, en een lichaam. 94 00:05:13,580 --> 00:05:16,110 De return type van de belangrijkste is altijd een int, 95 00:05:16,110 --> 00:05:19,120 en dit int wordt gebruikt om de status van het programma delen waar het eindigt. 96 00:05:19,120 --> 00:05:23,360 >> Heeft het succesvol te laten verlopen, of is het vroegtijdig beëindigen vanwege een fout? 97 00:05:23,360 --> 00:05:26,390 Terugkeren naar nul wijst op een succesvolle run, 98 00:05:26,390 --> 00:05:29,510 en terugkerende niet-nul waarde geeft een foutmelding. 99 00:05:29,510 --> 00:05:31,950 Afhankelijk van het soort programma dat u aan het schrijven bent, 100 00:05:31,950 --> 00:05:34,960 terugkeren verschillende codes voor verschillende fouten kunnen nuttig 101 00:05:34,960 --> 00:05:37,210 voor mensen die gebruik maken van uw programma later. 102 00:05:37,210 --> 00:05:40,220 Mains argumenten zijn een beetje ingewikkelder. 103 00:05:40,220 --> 00:05:42,150 >> De lijst met argumenten kan leeg zijn, 104 00:05:42,150 --> 00:05:45,330 die we aanduiden met het schrijven van leegte in tussen de haakjes, 105 00:05:45,330 --> 00:05:50,220 of de lijst kan beschikken over 2 argumenten: een int en een scala aan char * s. 106 00:05:50,220 --> 00:05:52,820 Deze worden gebruikt wanneer uw programma wil gebruiken 107 00:05:52,820 --> 00:05:56,490 argumenten die in op de opdrachtregel wanneer het programma wordt aangeroepen. 108 00:05:56,490 --> 00:05:59,690 De int argument wordt meestal genoemd argc, 109 00:05:59,690 --> 00:06:03,300 en is gelijk aan de lengte van de char * array, bekend als argv. 110 00:06:03,300 --> 00:06:07,080 Argv bevat de opdrachtregel argumenten die in het programma. 111 00:06:07,080 --> 00:06:11,440 In een ander kort, zullen we praten over hoe deze variabelen te gebruiken in meer detail. 112 00:06:11,440 --> 00:06:15,220 Voor nu, voel je vrij om de belangrijkste van beide manier te verklaren. 113 00:06:15,220 --> 00:06:19,410 Ik meestal voor kiezen om het op te schrijven van de kortere weg, zonder argumenten, indien mogelijk. 114 00:06:19,410 --> 00:06:22,230 >> Nu je weet hoe de functies schrijven, 115 00:06:22,230 --> 00:06:25,030 je bent goed op weg naar de ontwikkeling van grotere, meer complexe programma's. 116 00:06:25,030 --> 00:06:29,740 Mijn naam is Nate Hardison. Dit is CS50.