1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Funkce jsou části kódu používají v rámci většího programu 2 00:00:09,640 --> 00:00:11,430 k provedení určitého úkolu. 3 00:00:11,430 --> 00:00:15,060 Jsou také známy jako postupy, podprogramy a podprogramy, 4 00:00:15,060 --> 00:00:18,320 protože ve skutečnosti jsou jen mini programy v rámci programů. 5 00:00:18,320 --> 00:00:20,340 I když jste možná všimli, 6 00:00:20,340 --> 00:00:24,090 jste určitě využili funkcí již pokud jste naprogramován v jazyce C. 7 00:00:24,090 --> 00:00:26,770 Když píšete věci na obrazovce pomocí printf, 8 00:00:26,770 --> 00:00:29,380 jste vlastně používáte funkci nazvanou printf. 9 00:00:29,380 --> 00:00:33,760 Stejně tak, GetInt a GetString jsou funkce, které CS50 poskytuje pro vás. 10 00:00:33,760 --> 00:00:37,750 Jak programátorů, používáme funkce pro z několika důvodů. 11 00:00:37,750 --> 00:00:41,240 >> S funkcí provádět běžné úkoly jako je psaní na obrazovku 12 00:00:41,240 --> 00:00:44,480 a vyzývá uživatele pro vstup šetří nám čas při programování. 13 00:00:44,480 --> 00:00:47,510 To není nutné psát kód dělat ty stejné věci 14 00:00:47,510 --> 00:00:49,520 protože jsou již pro nás udělal. 15 00:00:49,520 --> 00:00:54,580 Není to ani nutné, abychom pochopili, jak přesně tyto funkce pracují interně. 16 00:00:54,580 --> 00:00:58,880 Místo toho, jen musíme vědět, jak používat nebo na ně volat v našich programech. 17 00:00:58,880 --> 00:01:02,040 Je to také užitečné psát funkce ve větších programů 18 00:01:02,040 --> 00:01:04,330 i když nejste v plánu mít jiní používají je, 19 00:01:04,330 --> 00:01:06,830 jen rozdělit větší úkol. 20 00:01:06,830 --> 00:01:11,910 Tímto způsobem, můžete dát strukturu kódu podobně jako byste dát strukturu eseje, 21 00:01:11,910 --> 00:01:15,180 a opravdu velké projekty zaktivujete více lidí 22 00:01:15,180 --> 00:01:16,730 k práci na různých částech v současně 23 00:01:16,730 --> 00:01:20,480 protože je to jasné, kde jedna osoba práce končí a další začíná to. 24 00:01:20,480 --> 00:01:26,530 >> Funkce jsou obvykle v provozu na 1 nebo více vstupů, známý jako argumenty nebo parametry, 25 00:01:26,530 --> 00:01:30,520 transformace těchto vstupů do výstupu hodnotu, která je pak vrácena. 26 00:01:30,520 --> 00:01:34,950 Nicméně, to je také možné, že funkce, které nepoužívají žádné vstupní argumenty 27 00:01:34,950 --> 00:01:36,400 a nevrací výstup. 28 00:01:36,400 --> 00:01:38,790 Dobře, dost se načechraný věci. 29 00:01:38,790 --> 00:01:41,790 Pojďme se podívat na některé reálných funkcí v C. 30 00:01:41,790 --> 00:01:45,570 >> Zde máme funkci nazvanou čtverec, který, věřte tomu nebo ne, 31 00:01:45,570 --> 00:01:47,570 vypočítá druhou mocninu vstupu. 32 00:01:47,570 --> 00:01:49,490 Pojďme rozebrat syntaxi toho. 33 00:01:49,490 --> 00:01:51,860 První slovo, které vidíte v funkci, int, 34 00:01:51,860 --> 00:01:57,460 určuje návratový typ funkce, která je, typ C je funkce výstupu. 35 00:01:57,460 --> 00:02:00,370 Tato funkce vypíše hodnotu s typu int. 36 00:02:00,370 --> 00:02:04,100 Další slovo, které vidíte, je název funkce, náměstí v tomto případě. 37 00:02:04,100 --> 00:02:07,390 Pojmenování funkce vhodně je důležité zejména 38 00:02:07,390 --> 00:02:11,260 protože je to asi nejviditelnější dokumentaci toho, co funkce dělá. 39 00:02:11,260 --> 00:02:14,880 To by mohlo být v pohodě pojmenovat tuto funkci Shazam nebo Booyah, 40 00:02:14,880 --> 00:02:18,340 ale to by nám nic neřekne o tom, co funkce dělá. 41 00:02:18,340 --> 00:02:23,470 >> Po název funkce přicházejí vstupy do funkce, argumenty. 42 00:02:23,470 --> 00:02:26,380 Jsou uvedeny v souboru závorkách 43 00:02:26,380 --> 00:02:30,160 jak s jejich typ a jméno používat pro ně v těle funkce. 44 00:02:30,160 --> 00:02:34,030 Square trvá jen 1 argument, int na náměstí, 45 00:02:34,030 --> 00:02:36,160 které jsem se rozhodl dát jméno x. 46 00:02:36,160 --> 00:02:40,760 Tímto končí deklarace funkce nebo prototyp. 47 00:02:40,760 --> 00:02:43,320 Složené závorky kolem zbytek funkce 48 00:02:43,320 --> 00:02:45,870 označují začátek a konec těla funkce, 49 00:02:45,870 --> 00:02:48,320 definice funkce samotné. 50 00:02:48,320 --> 00:02:50,300 Náměstí je docela jednoduchá funkce. 51 00:02:50,300 --> 00:02:54,100 Je to jen má 1 řádek, protože všechno, co musíme udělat, je násobit x sám. 52 00:02:54,100 --> 00:02:59,250 Slovo return určuje výstupní hodnotu a spustí konec funkce. 53 00:02:59,250 --> 00:03:03,430 Chcete-li použít funkci náměstí, musíme dodat příslušné vstupy 54 00:03:03,430 --> 00:03:05,310 a pak zachycení výstupu. 55 00:03:05,310 --> 00:03:08,140 Tady, vidíte několik způsobů, jak toho dosáhnout. 56 00:03:08,140 --> 00:03:13,600 Můžeme projít v surovém int, jako je 6, nebo můžeme předat v proměnné, jako je. 57 00:03:13,600 --> 00:03:15,700 Všimněte si, že pokaždé, když říkáme náměstí, 58 00:03:15,700 --> 00:03:18,330 jsme zachytit výstup do proměnné a pak vytisknout. 59 00:03:18,330 --> 00:03:22,690 Nicméně, nemáme uložit návratovou hodnotu do proměnné a poté vytisknout. 60 00:03:22,690 --> 00:03:27,090 Mohli bychom poslat přímo do printf jako my, když jsme náměstí 10, 61 00:03:27,090 --> 00:03:30,580 ale to přece neznamená, že nemáme přístup k návratové hodnoty náměstí 10 62 00:03:30,580 --> 00:03:32,230 jinde v kódu. 63 00:03:32,230 --> 00:03:34,890 Pojďme se podívat na další jednoduchý příklad. 64 00:03:34,890 --> 00:03:38,750 >> Tentokrát budeme součet 2 plováky dohromady tak, že můžeme vidět, co funkce vypadá 65 00:03:38,750 --> 00:03:41,220 když to má 2 vstupy, ne jen 1. 66 00:03:41,220 --> 00:03:43,950 Jak můžete vidět, že to není moc odlišné. 67 00:03:43,950 --> 00:03:47,330 Vše, co udělat, je přidat v 2. argumentu, float jménem b, 68 00:03:47,330 --> 00:03:51,820 na seznamu argumentů pomocí čárku ji oddělit od první argument, plavat. 69 00:03:51,820 --> 00:03:55,550 Takže naše náměstí a částka funkce jsou docela snadné pochopit 70 00:03:55,550 --> 00:03:58,930 protože jsou rovnocenné funkce, které jste předtím neviděli v matiku. 71 00:03:58,930 --> 00:04:01,610 Nyní se pojďme podívat na funkci, která je mírně odlišná. 72 00:04:01,610 --> 00:04:04,620 Místo vrácení hodnoty, upraví stát. 73 00:04:04,620 --> 00:04:07,260 Toto je známé jako nežádoucího účinku. 74 00:04:07,260 --> 00:04:10,750 V tomto programu, funkce printf_fudd_style 75 00:04:10,750 --> 00:04:13,410 má návratový typ, který jsme neviděli, void. 76 00:04:13,410 --> 00:04:16,730 >> Void je říkával, že funkce nevrací nic. 77 00:04:16,730 --> 00:04:19,410 Nejsou žádné proměnné typu void, 78 00:04:19,410 --> 00:04:22,760 takže pokud se pokusíte vrátit něco z funkce, jako je printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 kompilátor bude křičet na tebe. 80 00:04:24,290 --> 00:04:29,390 Uvnitř printf_fudd_style, vidíme, že zatímco funkce stále provádí úkol, 81 00:04:29,390 --> 00:04:31,890 sice, přepnutí všech R na Ws, 82 00:04:31,890 --> 00:04:36,380 bod funkce je změnit řetězec a pak vytisknout na obrazovce, 83 00:04:36,380 --> 00:04:39,400 změnu stavu programu namísto vrací výsledek. 84 00:04:39,400 --> 00:04:43,700 Pomocí této funkce je velmi podobný pomocí našeho náměstí a součet funkce, 85 00:04:43,700 --> 00:04:46,950 kromě nemáme uložit výsledek do proměnné, nebo předat ho na jinou funkci 86 00:04:46,950 --> 00:04:49,520 protože není výsledkem mluvit. 87 00:04:49,520 --> 00:04:53,180 Takže, když jsme kompilovat a spouštět náš Elmer Fudd programu, 88 00:04:53,180 --> 00:04:56,970 uvidíte, že "Ty rascally králík!" dostane transformovala právo 89 00:04:56,970 --> 00:04:58,730 "Ty wascally Wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Konečně, tam je 1 další funkce stojí za diskusi 91 00:05:02,250 --> 00:05:06,810 protože jste dosud používali ji v každém programu C, které jste kdy napsal, hlavní. 92 00:05:06,810 --> 00:05:09,450 Hlavní je funkce podobně jako každý jiný. 93 00:05:09,450 --> 00:05:13,580 Je to má návratový typ, jméno, seznam argumentů, a tělo. 94 00:05:13,580 --> 00:05:16,110 Návratový typ main je vždy int, 95 00:05:16,110 --> 00:05:19,120 a to int se používá pro komunikaci stavu programu při jeho dokončení. 96 00:05:19,120 --> 00:05:23,360 >> Bylo to úspěšně spustit, nebo to skončilo předčasně kvůli chybě? 97 00:05:23,360 --> 00:05:26,390 Návratu na nulu označuje úspěšný běh, 98 00:05:26,390 --> 00:05:29,510 a vrácení jakékoli nenulovou hodnotu označuje chybu. 99 00:05:29,510 --> 00:05:31,950 V závislosti na druhu programu píšete, 100 00:05:31,950 --> 00:05:34,960 vrací různé kódy pro různé chyby mohou být užitečné 101 00:05:34,960 --> 00:05:37,210 pro lidi, kteří používají svůj program později. 102 00:05:37,210 --> 00:05:40,220 Síťové argumenty jsou trochu složitější. 103 00:05:40,220 --> 00:05:42,150 >> Seznam argumentů může být buď prázdný, 104 00:05:42,150 --> 00:05:45,330 které jsme uveďte písemně prázdnotu mezi závorky, 105 00:05:45,330 --> 00:05:50,220 nebo seznam může mít 2 argumenty: int a pole * char s. 106 00:05:50,220 --> 00:05:52,820 Tito jsou používáni když váš program má v úmyslu použít 107 00:05:52,820 --> 00:05:56,490 argumenty prošel v na příkazovém řádku, když je vyvolána program. 108 00:05:56,490 --> 00:05:59,690 Int argument je obvykle nazývá argc, 109 00:05:59,690 --> 00:06:03,300 a to je roven délce char * pole, známý jako argv. 110 00:06:03,300 --> 00:06:07,080 Argv obsahuje argumenty příkazového řádku předávány do programu. 111 00:06:07,080 --> 00:06:11,440 V další krátký, budeme mluvit o tom, jak používat tyto proměnné podrobněji. 112 00:06:11,440 --> 00:06:15,220 Pro tuto chvíli, můžete bez obav prohlásit, hlavní v obou směrech. 113 00:06:15,220 --> 00:06:19,410 I typicky vybrat napsat ji z kratší cestu, bez argumentů, pokud je to možné. 114 00:06:19,410 --> 00:06:22,230 >> Nyní, když víte, jak psát funkce, 115 00:06:22,230 --> 00:06:25,030 jste na dobré cestě k rozvoji větší, složitější programy. 116 00:06:25,030 --> 00:06:29,740 Mé jméno je Nate Hardison. To je CS50.