1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] A funkciók szakaszai kód egy nagyobb program 2 00:00:09,640 --> 00:00:11,430 végrehajtani egy adott feladatot. 3 00:00:11,430 --> 00:00:15,060 Ők is ismert eljárások, szubrutinok és alprogramok, 4 00:00:15,060 --> 00:00:18,320 mert tényleg csak mini programokat programokat. 5 00:00:18,320 --> 00:00:20,340 Annak ellenére, hogy talán nem is vette észre, 6 00:00:20,340 --> 00:00:24,090 Ön bizonnyal már használt funkciók már, ha már programozott C. 7 00:00:24,090 --> 00:00:26,770 Amikor írsz dolgokat a képernyőn printf, 8 00:00:26,770 --> 00:00:29,380 Ön tényleg használ nevezett funkció printf. 9 00:00:29,380 --> 00:00:33,760 Hasonlóképpen, getInt és getString olyan funkciók, CS50 előírja az Ön számára. 10 00:00:33,760 --> 00:00:37,750 Mint programozó, használjuk funkciók több okból. 11 00:00:37,750 --> 00:00:41,240 >> Tekintettel funkciók elvégzésére közös feladatok, mint az írás a képernyőre 12 00:00:41,240 --> 00:00:44,480 és a felhasználó megkérdezése a bemeneti megment minket, amikor programozás. 13 00:00:44,480 --> 00:00:47,510 Nem kell kódot írni tenni ugyanezeket a dolgokat 14 00:00:47,510 --> 00:00:49,520 mivel ők tették számunkra. 15 00:00:49,520 --> 00:00:54,580 Ez még csak nem is szükséges, hogy megértsük, hogy pontosan hogyan működnek azok a funkciók belsőleg. 16 00:00:54,580 --> 00:00:58,880 Ehelyett csak azt kell tudni, hogyan kell használni, vagy hívja őket a programokban. 17 00:00:58,880 --> 00:01:02,040 Az is hasznos, hogy írjon funkciók nagyobb volumenű programok 18 00:01:02,040 --> 00:01:04,330 még akkor is, ha nem tervezi, amelyek mások használják őket, 19 00:01:04,330 --> 00:01:06,830 Csak feldarabolni a nagy feladathoz. 20 00:01:06,830 --> 00:01:11,910 Így adsz struktúra a kódot ugyanúgy, mint azt adni szerkezet egy esszé, 21 00:01:11,910 --> 00:01:15,180 és az igazán nagy projektek Ön engedélyezi több ember 22 00:01:15,180 --> 00:01:16,730 dolgozni különböző részeire egy időben 23 00:01:16,730 --> 00:01:20,480 mivel ez világos, ha egy személy munkája véget ér, és egy másik az kezdődik. 24 00:01:20,480 --> 00:01:26,530 >> Funkciók általában működnek 1 vagy több bemeneten nevei érveket vagy paraméterek 25 00:01:26,530 --> 00:01:30,520 átalakítása a vizekbe kimeneti értéket, majd vissza. 26 00:01:30,520 --> 00:01:34,950 Ugyanakkor az is lehetséges, hogy olyan funkciók, amelyek nem használnak semmilyen bemeneti argumentumok 27 00:01:34,950 --> 00:01:36,400 és nem tér vissza a kimenetet. 28 00:01:36,400 --> 00:01:38,790 Oké, elég a bolyhos cucc. 29 00:01:38,790 --> 00:01:41,790 Vessünk egy pillantást néhány valós függvények a C 30 00:01:41,790 --> 00:01:45,570 >> Itt van egy függvényt nevű tér, akár hiszed, akár nem, 31 00:01:45,570 --> 00:01:47,570 kiszámítja a tér a bemenet. 32 00:01:47,570 --> 00:01:49,490 Nézzük boncolgatni a szintaxis azt. 33 00:01:49,490 --> 00:01:51,860 Az első szó, amit látni a funkció, int, 34 00:01:51,860 --> 00:01:57,460 meghatározza a visszatérési típus a függvény, azaz, a C típusú a függvény kimenetét. 35 00:01:57,460 --> 00:02:00,370 Ez a funkció kiírja egy értéket típusú int. 36 00:02:00,370 --> 00:02:04,100 A következő szó, amit lát, az a neve, a funkció, tér ebben az esetben. 37 00:02:04,100 --> 00:02:07,390 Elnevezési funkciók megfelelően különösen fontos 38 00:02:07,390 --> 00:02:11,260 mivel ez talán a leginkább látható dokumentációt, amit a függvény. 39 00:02:11,260 --> 00:02:14,880 Lehet, hogy jó, hogy nevezze ezt a funkciót Shazam vagy booyah, 40 00:02:14,880 --> 00:02:18,340 de ez nem mond semmit arról, hogy mi az adott függvény. 41 00:02:18,340 --> 00:02:23,470 >> Miután a függvény neve jön a bemenetek a funkciót, az érveket. 42 00:02:23,470 --> 00:02:26,380 Ezek felsorolása belsejében egy sor zárójel 43 00:02:26,380 --> 00:02:30,160 mind a típus és a nevet használja őket a szervezetben a funkciót. 44 00:02:30,160 --> 00:02:34,030 Tér mindössze 1 érv a int a tér, 45 00:02:34,030 --> 00:02:36,160 amely úgy döntöttem, hogy adja meg a nevét x. 46 00:02:36,160 --> 00:02:40,760 Ez véget vet a funkció nyilatkozat vagy prototípus. 47 00:02:40,760 --> 00:02:43,320 A kapcsos zárójelek körülvevő többi funkció 48 00:02:43,320 --> 00:02:45,870 jelölik a kezdete és vége a függvény test, 49 00:02:45,870 --> 00:02:48,320 a meghatározása a funkciót is. 50 00:02:48,320 --> 00:02:50,300 Tér egy nagyon egyszerű függvény. 51 00:02:50,300 --> 00:02:54,100 Ez csak 1 sort, hiszen minden, amit meg kell tennie, hogy szorozzuk x magától. 52 00:02:54,100 --> 00:02:59,250 A szó visszatérés határozza meg a kimeneti értéket, és kiváltja a vége a függvény. 53 00:02:59,250 --> 00:03:03,430 Ahhoz, hogy a tér funkciót, meg kell bocsátani a megfelelő bemenetek 54 00:03:03,430 --> 00:03:05,310 majd elfog a kimenetet. 55 00:03:05,310 --> 00:03:08,140 Itt látható egy pár módon csinálja. 56 00:03:08,140 --> 00:03:13,600 Mi lehet átadni a nyers int, mint a 6, vagy mi is eltelhet egy változó, mint egy. 57 00:03:13,600 --> 00:03:15,700 Ne feledje, hogy minden egyes alkalommal hívunk square, 58 00:03:15,700 --> 00:03:18,330 hogy elfog a kimenetet egy változó, majd nyomtassa ki. 59 00:03:18,330 --> 00:03:22,690 Azonban nem kell tárolni a visszatérési értéket egy változó, majd nyomtassa ki. 60 00:03:22,690 --> 00:03:27,090 Így egyszerűen küldje el közvetlenül a printf, mint mi, mikor tér 10, 61 00:03:27,090 --> 00:03:30,580 de ez nem jelenti azt, hogy nem férnek hozzá a visszatérési érték tér 10. 62 00:03:30,580 --> 00:03:32,230 máshol a kódot. 63 00:03:32,230 --> 00:03:34,890 Nézzünk egy egyszerű példát. 64 00:03:34,890 --> 00:03:38,750 >> Ezúttal fogjuk összefoglalni 2 úszik együtt, hogy tudjuk milyen egy függvény néz 65 00:03:38,750 --> 00:03:41,220 ha van 2 bemenet helyett csak 1. 66 00:03:41,220 --> 00:03:43,950 Amint látod, ez nem sokban különbözik. 67 00:03:43,950 --> 00:03:47,330 Minden teszünk hozzá, a 2. érv a float nevű b, 68 00:03:47,330 --> 00:03:51,820 A paraméterek listája egy vesszővel, hogy elkülönüljön az első érv, lebeg a. 69 00:03:51,820 --> 00:03:55,550 Szóval, a tér és az összeg funkciók elég könnyen érthető 70 00:03:55,550 --> 00:03:58,930 mert ők azonos funkciókat, hogy már látott matematikai osztály. 71 00:03:58,930 --> 00:04:01,610 Most nézzük meg, hogy a funkció némileg eltérő. 72 00:04:01,610 --> 00:04:04,620 Ahelyett, hogy visszatért egy érték, módosítja az állam. 73 00:04:04,620 --> 00:04:07,260 Ez az úgynevezett, amelynek mellékhatás. 74 00:04:07,260 --> 00:04:10,750 Ebben a programban, a printf_fudd_style funkció 75 00:04:10,750 --> 00:04:13,410 van egy visszatérési típus, amit még nem látott, semmis. 76 00:04:13,410 --> 00:04:16,730 >> Void is szokta mondani, hogy a függvény nem ad vissza semmit. 77 00:04:16,730 --> 00:04:19,410 Nincsenek változók típusa void, 78 00:04:19,410 --> 00:04:22,760 így ha megpróbál visszatérni valamit függvény hasonló printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 a fordító fog kiabálni veled. 80 00:04:24,290 --> 00:04:29,390 Belül printf_fudd_style, azt látjuk, hogy míg a funkció továbbra is végrehajtja a feladatot, 81 00:04:29,390 --> 00:04:31,890 nevezetesen, kapcsoló minden Rs a Ws, 82 00:04:31,890 --> 00:04:36,380 a lényeg a funkció, hogy módosítsa a húr, majd nyomtassa ki a képernyőn, 83 00:04:36,380 --> 00:04:39,400 megváltoztatása az állam a program helyett a visszatérő eredményt. 84 00:04:39,400 --> 00:04:43,700 Ezen funkció használata nagyon hasonlít a mi tér és összege funkciók, 85 00:04:43,700 --> 00:04:46,950 kivéve, hogy nem tárolja az eredményt a változó vagy át ki másik funkció 86 00:04:46,950 --> 00:04:49,520 mivel nincs eredménye beszélni. 87 00:04:49,520 --> 00:04:53,180 Tehát, amikor összeállításához és futtatásához a Elmer Fudd program, 88 00:04:53,180 --> 00:04:56,970 látod, hogy "Te hitvány nyúl!" gets transzformált jog 89 00:04:56,970 --> 00:04:58,730 "Te wascally Wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Végül, van még 1 függvény érdemes megvitatni 91 00:05:02,250 --> 00:05:06,810 mert már használja minden C program, amit valaha írt, fő. 92 00:05:06,810 --> 00:05:09,450 Main függvény ugyanúgy, ahogy minden más. 93 00:05:09,450 --> 00:05:13,580 Van rajta egy visszatérési típus, egy nevet, egy listát az érvek, és egy test. 94 00:05:13,580 --> 00:05:16,110 A visszatérési típus fő mindig egy int, 95 00:05:16,110 --> 00:05:19,120 és ez az int használják kommunikál az állapotát a programot, amikor befejezi. 96 00:05:19,120 --> 00:05:23,360 >> Vajon sikeresen lefut, vagy nem ez idő előtti befejezése egy hiba miatt? 97 00:05:23,360 --> 00:05:26,390 Visszatérve a nulla jelzi a sikeres run, 98 00:05:26,390 --> 00:05:29,510 és vissza semmilyen nem nulla érték azt jelzi, egy hiba. 99 00:05:29,510 --> 00:05:31,950 Attól függően, hogy milyen programot írsz, 100 00:05:31,950 --> 00:05:34,960 visszatérő különböző kódokat különböző hibák, hasznos lehet 101 00:05:34,960 --> 00:05:37,210 az emberek, akik használják a programot a későbbiekben. 102 00:05:37,210 --> 00:05:40,220 Hálózati érvek egy kicsit bonyolultabb. 103 00:05:40,220 --> 00:05:42,150 >> Az érvelés lista lehetnek üres, 104 00:05:42,150 --> 00:05:45,330 amelyhez jelezni írásban void között a zárójelben 105 00:05:45,330 --> 00:05:50,220 vagy a lista van 2 érvek: egy int és egy sor char * s. 106 00:05:50,220 --> 00:05:52,820 Ezeket akkor használjuk, ha a program kívánja használni 107 00:05:52,820 --> 00:05:56,490 érveket telt el a parancssorból, ha a program hivatkoznak. 108 00:05:56,490 --> 00:05:59,690 Az int érv általában nevezik argc, 109 00:05:59,690 --> 00:06:03,300 és ez azonos a hossza a char * tömb, az úgynevezett argv. 110 00:06:03,300 --> 00:06:07,080 Argv tartalmazza a parancssori argumentumok a programba. 111 00:06:07,080 --> 00:06:11,440 Egy másik Röviden, fogunk beszélni, hogyan kell használni ezeket a változókat részletesebben. 112 00:06:11,440 --> 00:06:15,220 Most, akkor bátran kijelentem fő mindkét irányban. 113 00:06:15,220 --> 00:06:19,410 Én általában úgy dönt, hogy írja ki a rövidebb utat, nem érvek, ha lehetséges. 114 00:06:19,410 --> 00:06:22,230 >> Most, hogy tudod, hogyan kell írni funkciók, 115 00:06:22,230 --> 00:06:25,030 te is az utat a fejlődő nagyobb, komplex programok. 116 00:06:25,030 --> 00:06:29,740 A nevem Nate Hardison. Ez CS50.