1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Funcțiile sunt secțiuni de cod folosite în cadrul unui program mai larg 2 00:00:09,640 --> 00:00:11,430 pentru a efectua o anumită sarcină. 3 00:00:11,430 --> 00:00:15,060 Ele sunt, de asemenea, cunoscut sub numele de proceduri, subrutine, și subprograme, 4 00:00:15,060 --> 00:00:18,320 într-adevăr, deoarece acestea sunt doar programe de mini în cadrul programelor. 5 00:00:18,320 --> 00:00:20,340 Chiar dacă nu s-ar putea să fi observat, 6 00:00:20,340 --> 00:00:24,090 cel mai sigur au folosit funcțiile deja dacă ați programat în C. 7 00:00:24,090 --> 00:00:26,770 Când scrieți chestii de ecran folosind printf, 8 00:00:26,770 --> 00:00:29,380 pe care îl utilizați, de fapt o funcție numită printf. 9 00:00:29,380 --> 00:00:33,760 De asemenea, GetInt și getString sunt funcții care prevede CS50 pentru tine. 10 00:00:33,760 --> 00:00:37,750 Ca programatori, vom folosi funcțiile pentru un număr de motive. 11 00:00:37,750 --> 00:00:41,240 >> Având funcții pentru a efectua sarcini comune cum ar fi scris pe ecran 12 00:00:41,240 --> 00:00:44,480 și determinat de utilizator pentru intrare ne salvează timp la programare. 13 00:00:44,480 --> 00:00:47,510 Nu este necesar să scrie cod pentru a face aceste lucruri aceleași 14 00:00:47,510 --> 00:00:49,520 deoarece acestea sunt deja făcut pentru noi. 15 00:00:49,520 --> 00:00:54,580 Nici măcar nu e necesar pentru noi să înțelegem exact cum funcționează aceste funcții pe plan intern. 16 00:00:54,580 --> 00:00:58,880 În schimb, trebuie doar să știi cum să folosești sau le puteți apela în programele noastre. 17 00:00:58,880 --> 00:01:02,040 Este, de asemenea, de ajutor pentru a scrie funcții în programe mai mari 18 00:01:02,040 --> 00:01:04,330 chiar dacă nu sunteți de planificare pe având în alții le folosesc, 19 00:01:04,330 --> 00:01:06,830 doar pentru a împărți sarcina mai mare la mână. 20 00:01:06,830 --> 00:01:11,910 În acest fel, vă dau structura codul de mult ca te-ai da la structura un eseu, 21 00:01:11,910 --> 00:01:15,180 și cu proiecte foarte mari, activați mai multe persoane 22 00:01:15,180 --> 00:01:16,730 pentru a lucra la diferite părți, în același timp 23 00:01:16,730 --> 00:01:20,480 din moment ce este clar în cazul în care locul de muncă a unei persoane se termină și începe un alt e. 24 00:01:20,480 --> 00:01:26,530 >> Funcții operează de obicei pe 1 sau mai multe intrări, cunoscut sub numele de argumente sau parametri, 25 00:01:26,530 --> 00:01:30,520 transformarea acestor intrări într-o valoare de ieșire, care este apoi returnat. 26 00:01:30,520 --> 00:01:34,950 Cu toate acestea, este, de asemenea, posibil să aibă funcții care nu utilizează nici un argument de intrare 27 00:01:34,950 --> 00:01:36,400 și nu returnează o ieșire. 28 00:01:36,400 --> 00:01:38,790 Bine, destul cu chestii pufos. 29 00:01:38,790 --> 00:01:41,790 Să aruncăm o privire la unele funcții reale în C. 30 00:01:41,790 --> 00:01:45,570 >> Aici avem o funcție numită pătrat că, crezi sau nu, 31 00:01:45,570 --> 00:01:47,570 calculează pătratul de intrare. 32 00:01:47,570 --> 00:01:49,490 Să diseca sintaxa de ea. 33 00:01:49,490 --> 00:01:51,860 Primul cuvânt care le vedeți în funcție, int, 34 00:01:51,860 --> 00:01:57,460 specifică tipul returnat de funcția, care este, de tip C de ieșire functiei. 35 00:01:57,460 --> 00:02:00,370 Această funcție va afișa o valoare cu tip int. 36 00:02:00,370 --> 00:02:04,100 Cuvântul următor veți vedea este numele funcției, pătrat în acest caz. 37 00:02:04,100 --> 00:02:07,390 Numirea funcțiile în mod corespunzător este deosebit de importantă 38 00:02:07,390 --> 00:02:11,260 din moment ce este, probabil, cel mai vizibil al documentației ceea ce face funcția. 39 00:02:11,260 --> 00:02:14,880 S-ar putea să fie rece pentru a numi această funcție Shazam sau Booyah, 40 00:02:14,880 --> 00:02:18,340 dar asta nu ne-ar spune nimic despre ceea ce face funcția. 41 00:02:18,340 --> 00:02:23,470 >> În urma numele funcției vin intrările la funcția de, argumentele. 42 00:02:23,470 --> 00:02:26,380 Acestea sunt listate în interiorul unui set de paranteze 43 00:02:26,380 --> 00:02:30,160 cu atât lor, tipul și un nume de utilizat pentru ei în cadrul corpului de funcții. 44 00:02:30,160 --> 00:02:34,030 Piața are doar 1 argument, int la pătrat, 45 00:02:34,030 --> 00:02:36,160 pe care am decis să dea numele x. 46 00:02:36,160 --> 00:02:40,760 Aceasta încheie declarația funcției sau prototip. 47 00:02:40,760 --> 00:02:43,320 Cele acolade jurul restul funcției 48 00:02:43,320 --> 00:02:45,870 denotă începutul și sfârșitul corpului funcției, 49 00:02:45,870 --> 00:02:48,320 definirea funcției în sine. 50 00:02:48,320 --> 00:02:50,300 Square este o funcție destul de simplu. 51 00:02:50,300 --> 00:02:54,100 Are doar 1 linie, deoarece tot ce trebuie să faceți este să multiplice x de la sine. 52 00:02:54,100 --> 00:02:59,250 Cuvântul retur specifică valoarea de ieșire și declanșează sfârșitul funcției. 53 00:02:59,250 --> 00:03:03,430 Pentru a utiliza funcția de pătrat, avem nevoie pentru a furniza intrări adecvate 54 00:03:03,430 --> 00:03:05,310 și de captare, apoi de ieșire. 55 00:03:05,310 --> 00:03:08,140 Aici, veți vedea un cuplu de moduri de a face asta. 56 00:03:08,140 --> 00:03:13,600 Ne poate trece într-un int prime, cum ar fi 6, sau putem trece intr-o variabila ca un. 57 00:03:13,600 --> 00:03:15,700 Rețineți că de fiecare dată când ne numim pătrat, 58 00:03:15,700 --> 00:03:18,330 am de captare de ieșire într-o variabilă și apoi imprimați-l. 59 00:03:18,330 --> 00:03:22,690 Cu toate acestea, nu avem pentru a stoca valoarea de retur într-o variabilă și apoi imprimați. 60 00:03:22,690 --> 00:03:27,090 Am putea doar trimite-l direct la printf așa cum facem noi atunci când ne pătrat 10, 61 00:03:27,090 --> 00:03:30,580 dar acest lucru nu înseamnă că nu avem acces la valoarea returnata de pătrat 10 62 00:03:30,580 --> 00:03:32,230 în altă parte în cod. 63 00:03:32,230 --> 00:03:34,890 Să ne uităm la un alt exemplu simplu. 64 00:03:34,890 --> 00:03:38,750 >> De data aceasta, ne vom rezuma 2 flotoare împreună, astfel încât să putem vedea ce o funcție arata ca 65 00:03:38,750 --> 00:03:41,220 atunci când are 2 intrări în loc de doar 1. 66 00:03:41,220 --> 00:03:43,950 După cum puteți vedea, nu e mult diferit. 67 00:03:43,950 --> 00:03:47,330 Tot ce facem este să adăugați în argumentul doilea, un float b nume, 68 00:03:47,330 --> 00:03:51,820 la lista de argumente folosind o virgulă pentru a separa de primul argument, pluti o. 69 00:03:51,820 --> 00:03:55,550 Deci, pătrat nostru și funcțiile sumă sunt destul de ușor de înțeles 70 00:03:55,550 --> 00:03:58,930 deoarece acestea sunt echivalente cu funcțiile pe care le-ați văzut până acum în clasa de matematică. 71 00:03:58,930 --> 00:04:01,610 Acum, să ne uităm la o funcție care este ușor diferită. 72 00:04:01,610 --> 00:04:04,620 În loc de a se întoarce o valoare, care modifică un stat. 73 00:04:04,620 --> 00:04:07,260 Acest lucru este cunoscut ca având un efect secundar. 74 00:04:07,260 --> 00:04:10,750 În acest program, funcția printf_fudd_style 75 00:04:10,750 --> 00:04:13,410 are un tip de întoarcere pe care nu am văzut până acum, anulate. 76 00:04:13,410 --> 00:04:16,730 >> Vidul este folosit pentru a spune că o funcție nu se întoarce nimic. 77 00:04:16,730 --> 00:04:19,410 Momentan nu sunt variabile de tip void, 78 00:04:19,410 --> 00:04:22,760 așa că, dacă încearcă să se întoarcă ceva de la o funcție la fel ca printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 compilatorul va țipa la tine. 80 00:04:24,290 --> 00:04:29,390 În interiorul printf_fudd_style, vom vedea că în timp ce funcția efectuează încă o sarcină, 81 00:04:29,390 --> 00:04:31,890 și anume, trecerea la toți R Ws, 82 00:04:31,890 --> 00:04:36,380 punctul de funcții este de a modifica șir și apoi imprimați-l pe ecran, 83 00:04:36,380 --> 00:04:39,400 schimbarea stării de programul în loc de a se întoarce un rezultat. 84 00:04:39,400 --> 00:04:43,700 Folosind aceasta functie este foarte mult ca folosind pătrat noastră și funcțiile suma, 85 00:04:43,700 --> 00:04:46,950 , cu excepția nu stocăm rezultatul intr-o variabila sau trece-l la o altă funcție 86 00:04:46,950 --> 00:04:49,520 deoarece nu există nici un rezultat pentru a vorbi despre. 87 00:04:49,520 --> 00:04:53,180 Deci, atunci când am compila și executa programul nostru Elmer Fudd, 88 00:04:53,180 --> 00:04:56,970 veți vedea că "Tu mișel iepure!" se transformă dreptul de a 89 00:04:56,970 --> 00:04:58,730 "Tu wabbit wascally!" 90 00:04:58,730 --> 00:05:02,250 >> În cele din urmă, există funcția 1 mai merită să discutăm 91 00:05:02,250 --> 00:05:06,810 din moment ce ai fost, folosind în fiecare program C care le-ați scris vreodată, principal. 92 00:05:06,810 --> 00:05:09,450 Principal este o funcție mult ca oricare alta. 93 00:05:09,450 --> 00:05:13,580 Are un tip de întoarcere, un nume, o listă de argumente, și un corp. 94 00:05:13,580 --> 00:05:16,110 Tipul de retur principal este întotdeauna un int, 95 00:05:16,110 --> 00:05:19,120 iar acest lucru int este folosit pentru a comunica statutul de program atunci când se termină. 96 00:05:19,120 --> 00:05:23,360 >> Credeți rula cu succes, sau nu se termina mai devreme din cauza unei erori? 97 00:05:23,360 --> 00:05:26,390 Revenind la zero indică o rulare cu succes, 98 00:05:26,390 --> 00:05:29,510 și returnarea orice valoare non-zero, indică o eroare. 99 00:05:29,510 --> 00:05:31,950 În funcție de tipul de program pe care il scrii, 100 00:05:31,950 --> 00:05:34,960 revenind coduri diferite pentru diverse erori poate fi de ajutor 101 00:05:34,960 --> 00:05:37,210 pentru persoanele care folosesc programul mai târziu. 102 00:05:37,210 --> 00:05:40,220 Argumentele rețea sunt un pic mai complicate. 103 00:05:40,220 --> 00:05:42,150 >> Lista argument poate fi gol, 104 00:05:42,150 --> 00:05:45,330 care ne indica prin scris, anulate în între paranteze, 105 00:05:45,330 --> 00:05:50,220 sau lista poate avea 2 argumente: un int și o serie de * e char. 106 00:05:50,220 --> 00:05:52,820 Acestea sunt utilizate atunci când programul intenționează să utilizeze 107 00:05:52,820 --> 00:05:56,490 argumente în trecut pe linia de comandă atunci când programul este invocată. 108 00:05:56,490 --> 00:05:59,690 Argumentul este de obicei numit int argc, 109 00:05:59,690 --> 00:06:03,300 și este egală cu lungimea de matrice char *, cunoscut sub numele de argv. 110 00:06:03,300 --> 00:06:07,080 Argv conține argumentele de linie de comandă trecut în program. 111 00:06:07,080 --> 00:06:11,440 Într-un alt scurt, vom vorbi despre modul de utilizare a acestor variabile în detaliu mai mult. 112 00:06:11,440 --> 00:06:15,220 Pentru moment, vă puteți simți liber să declare principal, fie un fel. 113 00:06:15,220 --> 00:06:19,410 Am de obicei, aleg să-l scrie calea mai scurtă, cu nici un argument, atunci când este posibil. 114 00:06:19,410 --> 00:06:22,230 >> Acum, că știți cum să scrie funcții, 115 00:06:22,230 --> 00:06:25,030 esti bine pe cale de a dezvolta mai mari, mai complexe programe. 116 00:06:25,030 --> 00:06:29,740 Numele meu este Nate Hardison. Acest lucru este CS50.