1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Funkcije su dijelovi koda koji se koriste u sklopu šireg programa 2 00:00:09,640 --> 00:00:11,430 za obavljanje određenog zadatka. 3 00:00:11,430 --> 00:00:15,060 Oni su također poznat kao procedure, potprograme, i potprogrami, 4 00:00:15,060 --> 00:00:18,320 jer su oni zapravo samo mini programi unutar programa. 5 00:00:18,320 --> 00:00:20,340 Iako možda niste primijetili, 6 00:00:20,340 --> 00:00:24,090 što svakako imati koristi funkcije već ako ste programirali u C. 7 00:00:24,090 --> 00:00:26,770 Kada pišete stvari na zaslonu pomoću printf, 8 00:00:26,770 --> 00:00:29,380 ste zapravo koristite funkciju printf zove. 9 00:00:29,380 --> 00:00:33,760 Isto tako, GetInt i GetString su funkcije koje CS50 pruža za vas. 10 00:00:33,760 --> 00:00:37,750 Kao programera, mi koristimo funkcije za nekoliko razloga. 11 00:00:37,750 --> 00:00:41,240 >> Nakon što je funkcija za izvođenje uobičajenih zadataka kao što je pisanje na zaslon 12 00:00:41,240 --> 00:00:44,480 i pitajući korisnika za ulaz štedi nam vrijeme kada programiranja. 13 00:00:44,480 --> 00:00:47,510 To nije potrebno napisati kod za napraviti one iste stvari 14 00:00:47,510 --> 00:00:49,520 budući da su već učinio za nas. 15 00:00:49,520 --> 00:00:54,580 To nije ni potrebno za nas da shvatimo kako točno one funkcije rade interno. 16 00:00:54,580 --> 00:00:58,880 Umjesto toga, samo moramo znati kako koristiti ili nazovite ih u našim programima. 17 00:00:58,880 --> 00:01:02,040 To je također korisno napisati funkcije u veće programe 18 00:01:02,040 --> 00:01:04,330 čak i ako ne planirate da ih drugi koriste, 19 00:01:04,330 --> 00:01:06,830 samo podijeliti veći zadatak pri ruci. 20 00:01:06,830 --> 00:01:11,910 Na taj način ćete dati strukturu kodu baš kao što bih dao strukturu eseja, 21 00:01:11,910 --> 00:01:15,180 i stvarno velike projekte omogućite više osoba 22 00:01:15,180 --> 00:01:16,730 raditi na različitim dijelovima u isto vrijeme 23 00:01:16,730 --> 00:01:20,480 budući da je jasno gdje jedna osoba je djelo završava, a drugi je počinje. 24 00:01:20,480 --> 00:01:26,530 >> Funkcije obično rade na jednom ili više ulaza, poznat kao argumente ili parametara, 25 00:01:26,530 --> 00:01:30,520 pretvarajući one ulaze u izlazne vrijednosti koje se potom vratio. 26 00:01:30,520 --> 00:01:34,950 Međutim, to je također moguće da su funkcije koje ne koristite nikakve ulazne argumente 27 00:01:34,950 --> 00:01:36,400 i ne vrate izlaz. 28 00:01:36,400 --> 00:01:38,790 Ok, dosta fluffy stvari. 29 00:01:38,790 --> 00:01:41,790 Idemo pogledati neke stvarne funkcije u C. 30 00:01:41,790 --> 00:01:45,570 >> Ovdje imamo funkciju zove trg koji, vjerovali ili ne, 31 00:01:45,570 --> 00:01:47,570 izračunava kvadrat ulaz. 32 00:01:47,570 --> 00:01:49,490 Ajmo secirati sintaksu njega. 33 00:01:49,490 --> 00:01:51,860 Prva riječ koju vidite u funkciji, int, 34 00:01:51,860 --> 00:01:57,460 određuje povratnu vrstu funkciju, to jest, C tip funkciji je izlaz. 35 00:01:57,460 --> 00:02:00,370 Ova funkcija će ispisati vrijednost s tipa int. 36 00:02:00,370 --> 00:02:04,100 Sljedeći riječ koju vidite je naziv funkcije, kvadrat u ovom slučaju. 37 00:02:04,100 --> 00:02:07,390 Imenovanje funkcije prikladno je osobito važno 38 00:02:07,390 --> 00:02:11,260 jer je vjerojatno najvidljiviji dokumentacija što je funkcija radi. 39 00:02:11,260 --> 00:02:14,880 To bi moglo biti cool nazvati ovu funkciju Shazam ili booyah, 40 00:02:14,880 --> 00:02:18,340 ali da ne bi nam reći nešto o tome što funkcija radi. 41 00:02:18,340 --> 00:02:23,470 >> Nakon funkcija Naziv dolaze ulaze u funkciji, argumenti. 42 00:02:23,470 --> 00:02:26,380 Oni su navedeni unutar skupa zagradama 43 00:02:26,380 --> 00:02:30,160 s obje njihove vrste i naziv koristiti za njih unutar tijela funkcije. 44 00:02:30,160 --> 00:02:34,030 Trg traje samo jedan argument, int na trgu, 45 00:02:34,030 --> 00:02:36,160 koji sam odlučio dati ime x. 46 00:02:36,160 --> 00:02:40,760 Ovaj završava funkcije deklaraciju ili prototip. 47 00:02:40,760 --> 00:02:43,320 Zavojite aparatić okolnih ostatak funkcije 48 00:02:43,320 --> 00:02:45,870 označavaju početak i kraj tijela funkcije, 49 00:02:45,870 --> 00:02:48,320 definicija funkcije same. 50 00:02:48,320 --> 00:02:50,300 Trg je prilično jednostavna funkcija. 51 00:02:50,300 --> 00:02:54,100 To je samo dobio jedan redak, jer sve što morate učiniti je pomnožiti x sama po sebi. 52 00:02:54,100 --> 00:02:59,250 Riječ povratak određuje izlaznu vrijednost i aktivira kraj funkciji. 53 00:02:59,250 --> 00:03:03,430 Da biste koristili kvadratni funkciju, moramo dostaviti odgovarajuće ulaze 54 00:03:03,430 --> 00:03:05,310 a zatim hvatanje izlaz. 55 00:03:05,310 --> 00:03:08,140 Ovdje možete vidjeti nekoliko načina da radiš. 56 00:03:08,140 --> 00:03:13,600 Možemo proći u sirovom int, kao što su šest, ili možemo proći u varijablu poput. 57 00:03:13,600 --> 00:03:15,700 Imajte na umu da svaki put zovemo trg, 58 00:03:15,700 --> 00:03:18,330 uhvatimo izlaz u varijablu i zatim ga ispisati. 59 00:03:18,330 --> 00:03:22,690 Međutim, mi nemamo pohraniti povratnu vrijednost u varijablu i zatim ispisati. 60 00:03:22,690 --> 00:03:27,090 Mi smo samo mogli poslati ga izravno na printf kao i mi kad smo trg 10, 61 00:03:27,090 --> 00:03:30,580 ali to ne znači da mi nemamo pristup povratnom vrijednosti trgu 10 62 00:03:30,580 --> 00:03:32,230 drugdje u kodu. 63 00:03:32,230 --> 00:03:34,890 Pogledajmo drugi jednostavnom primjeru. 64 00:03:34,890 --> 00:03:38,750 >> Ovaj put, mi ćemo sumirati dvije pliva zajedno, tako da možemo vidjeti što funkcija izgleda 65 00:03:38,750 --> 00:03:41,220 kada je dobio dva ulaza, umjesto samo jednog. 66 00:03:41,220 --> 00:03:43,950 Kao što možete vidjeti, to nije puno drugačija. 67 00:03:43,950 --> 00:03:47,330 Sve što učiniti je dodati u drugi argument, float nazvan b, 68 00:03:47,330 --> 00:03:51,820 na popis argumenata pomoću zarez ga odvojiti od prvog argumenta, plutaju. 69 00:03:51,820 --> 00:03:55,550 Dakle, naš trg i iznos funkcije su prilično lako razumjeti 70 00:03:55,550 --> 00:03:58,930 jer oni su ekvivalent funkcija koje ste vidjeli prije u math class. 71 00:03:58,930 --> 00:04:01,610 Sada, pogledajmo funkcija koja je malo drugačija. 72 00:04:01,610 --> 00:04:04,620 Umjesto da se vrate vrijednost, ona modificira stanje. 73 00:04:04,620 --> 00:04:07,260 To je poznato kao vlasništvo nuspojava. 74 00:04:07,260 --> 00:04:10,750 U ovom programu, printf_fudd_style funkcija 75 00:04:10,750 --> 00:04:13,410 ima povratni tip koji nismo vidjeli prije, nevažeće. 76 00:04:13,410 --> 00:04:16,730 >> Void je znao reći da funkcija ne vraća ništa. 77 00:04:16,730 --> 00:04:19,410 Nema varijabli tipa prazninu, 78 00:04:19,410 --> 00:04:22,760 pa ako vam pokušati vratiti nešto od funkcija kao što printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 prevodilac će vikati na tebe. 80 00:04:24,290 --> 00:04:29,390 Unutar printf_fudd_style, vidimo da, dok funkcija još uvijek obavlja zadatak, 81 00:04:29,390 --> 00:04:31,890 Naime, prebacivanje svih Re za Ws, 82 00:04:31,890 --> 00:04:36,380 točka funkcije za izmjenu string, a zatim ga ispisati na zaslonu, 83 00:04:36,380 --> 00:04:39,400 mijenja stanje programa, umjesto povratka rezultat. 84 00:04:39,400 --> 00:04:43,700 Koristeći ovu funkciju je vrlo slično pomoću naše trg i zbroj funkcija, 85 00:04:43,700 --> 00:04:46,950 osim što ne pohraniti rezultat u varijabla ili ga proći s drugom funkcijom 86 00:04:46,950 --> 00:04:49,520 jer nema posljedica govoriti. 87 00:04:49,520 --> 00:04:53,180 Dakle, kad smo sastaviti i pokrenuti našu Elmer Fudd program, 88 00:04:53,180 --> 00:04:56,970 vidiš da je "Vi raskalašno zec!" dobiva transformira pravo 89 00:04:56,970 --> 00:04:58,730 "Vi wascally wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Konačno, tu je jedan više funkcija vrijedi opisala 91 00:05:02,250 --> 00:05:06,810 jer ste ga koristite u svakom C programu ste ikada napisana, glavni. 92 00:05:06,810 --> 00:05:09,450 Glavna je funkcija baš kao i svaka druga. 93 00:05:09,450 --> 00:05:13,580 To je dobio povratnu vrstu, ime, popisa argumenata, i tijelo. 94 00:05:13,580 --> 00:05:16,110 Povratni tip glavnih uvijek int 95 00:05:16,110 --> 00:05:19,120 i to int koristi za komunikaciju status programa, kada to završi. 96 00:05:19,120 --> 00:05:23,360 >> Je li to uspješno pokreću, ili je to kraj rano zbog pogreške? 97 00:05:23,360 --> 00:05:26,390 Povratak na nulu označava uspješan rad, 98 00:05:26,390 --> 00:05:29,510 i vraćanja nule vrijednost ukazuje na pogrešku. 99 00:05:29,510 --> 00:05:31,950 Ovisno o vrsti programa pišete, 100 00:05:31,950 --> 00:05:34,960 povratka različite kodove za različite pogreške mogu biti korisne 101 00:05:34,960 --> 00:05:37,210 za ljude koji koriste svoj program kasnije. 102 00:05:37,210 --> 00:05:40,220 Mains su argumenti malo kompliciranije. 103 00:05:40,220 --> 00:05:42,150 >> Popis argument može biti prazna, 104 00:05:42,150 --> 00:05:45,330 koje upućuju prema pisanju prazninu između zagradama, 105 00:05:45,330 --> 00:05:50,220 ili popis može imati dva argumenta: int i niz char * s. 106 00:05:50,220 --> 00:05:52,820 Oni se koriste kada vaš program namjerava koristiti 107 00:05:52,820 --> 00:05:56,490 argumenti prošao u na naredbenog retka kada program pozivati. 108 00:05:56,490 --> 00:05:59,690 Int argument obično naziva argc, 109 00:05:59,690 --> 00:06:03,300 i to je jednaka duljina char * niz, poznat kao argv. 110 00:06:03,300 --> 00:06:07,080 Argv sadrži argumente naredbenog retka prošao u programu. 111 00:06:07,080 --> 00:06:11,440 U drugom Ukratko, razgovarat ćemo o tome kako koristiti ove varijable u više detalja. 112 00:06:11,440 --> 00:06:15,220 Za sada, možete slobodno proglasiti glavni ovako ili onako. 113 00:06:15,220 --> 00:06:19,410 Ja obično izabrati to napisati kraći put, bez argumenata, kada je to moguće. 114 00:06:19,410 --> 00:06:22,230 >> Sada kada znate kako napisati funkcije, 115 00:06:22,230 --> 00:06:25,030 ste dobro na Vašem putu prema razvoju veće, složenije programe. 116 00:06:25,030 --> 00:06:29,740 Moje ime je Nate Hardison. Ovo je CS50.