1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Функциите могат да се раздели на кода, използван в по-голяма програма 2 00:00:09,640 --> 00:00:11,430 за изпълнението на определена задача. 3 00:00:11,430 --> 00:00:15,060 Те са известни и като процедури, подпрограми и подпрограми, 4 00:00:15,060 --> 00:00:18,320 тъй като те наистина са само мини програми в рамките на програмите. 5 00:00:18,320 --> 00:00:20,340 Въпреки че може да не сте забелязали, 6 00:00:20,340 --> 00:00:24,090 най-категорично са използвани функции, които вече ако сте програмирали в C. 7 00:00:24,090 --> 00:00:26,770 Когато пишете неща на екрана с помощта ФОРМАТ 8 00:00:26,770 --> 00:00:29,380 сте всъщност използва функция, наречена ФОРМАТ. 9 00:00:29,380 --> 00:00:33,760 По същия начин, GetInt и GetString са функции, които CS50 спомага за вас. 10 00:00:33,760 --> 00:00:37,750 Като програмисти, ние използваме функции за редица причини. 11 00:00:37,750 --> 00:00:41,240 >> Като функции за изпълнение на общи задачи като писане на екрана 12 00:00:41,240 --> 00:00:44,480 и подканване на потребителя за вход ни спестява време при програмирането. 13 00:00:44,480 --> 00:00:47,510 Не е необходимо да пишете код да правят същите тези неща 14 00:00:47,510 --> 00:00:49,520 тъй като те са го направили за нас. 15 00:00:49,520 --> 00:00:54,580 Дори не е необходимо за нас да разберем как точно тези функции работят вътрешно. 16 00:00:54,580 --> 00:00:58,880 Вместо това, ние просто трябва да знаете как да използвате или да ги наречем в нашите програми. 17 00:00:58,880 --> 00:01:02,040 То също е полезно да напишете функции в по-големите програми 18 00:01:02,040 --> 00:01:04,330 дори и ако не сте планиране на други ги използват, 19 00:01:04,330 --> 00:01:06,830 само за да разпределят по-голямата задача в ръка. 20 00:01:06,830 --> 00:01:11,910 По този начин, вие давате структура на кода си, много като теб бих дал структура за есе, 21 00:01:11,910 --> 00:01:15,180 и с наистина големи проекти, които дават възможност на много хора 22 00:01:15,180 --> 00:01:16,730 да работят върху различни части в същото време 23 00:01:16,730 --> 00:01:20,480 тъй като е ясно, когато работата на един човек завършва и друга започва. 24 00:01:20,480 --> 00:01:26,530 >> Функции обикновено работят на 1 или повече входове, известни като аргументи и параметри, 25 00:01:26,530 --> 00:01:30,520 трансформиране на тези входове в изходна стойност, която се връща. 26 00:01:30,520 --> 00:01:34,950 Въпреки това, тя също е възможно да има функции, които не се използват всички входни аргументи 27 00:01:34,950 --> 00:01:36,400 и не се връщат изход. 28 00:01:36,400 --> 00:01:38,790 Добре, достатъчно с пухкави неща. 29 00:01:38,790 --> 00:01:41,790 Нека да разгледаме някои реални функции в C. 30 00:01:41,790 --> 00:01:45,570 >> Тук имаме функция, наречена площад, който, вярвате или не, 31 00:01:45,570 --> 00:01:47,570 изчислява на площада на входа. 32 00:01:47,570 --> 00:01:49,490 Да дисекция синтаксиса на. 33 00:01:49,490 --> 00:01:51,860 Първата дума, ще видите във функцията, вътр 34 00:01:51,860 --> 00:01:57,460 определя типът на връщане на функцията, тип С на изхода на функцията. 35 00:01:57,460 --> 00:02:00,370 Тази функция ще изведе стойност с тип Int. 36 00:02:00,370 --> 00:02:04,100 Следващата думата, която виждате, е името на функцията, квадрат в този случай. 37 00:02:04,100 --> 00:02:07,390 Naming функции по подходящ начин е особено важно 38 00:02:07,390 --> 00:02:11,260 тъй като това е може би най-видимата документация на функцията. 39 00:02:11,260 --> 00:02:14,880 То може да бъде готино да назовем тази функция Shazam или booyah, 40 00:02:14,880 --> 00:02:18,340 но това няма да ни каже нищо за това, което прави функцията. 41 00:02:18,340 --> 00:02:23,470 >> След името на функцията се функцията на входовете, аргументите. 42 00:02:23,470 --> 00:02:26,380 Те са изброени в рамките на набор от скоби 43 00:02:26,380 --> 00:02:30,160 с техния вид и име да използвате за тях в тялото на функцията. 44 00:02:30,160 --> 00:02:34,030 Square отнема само 1 аргумент, вътр на квадрат, 45 00:02:34,030 --> 00:02:36,160 които съм решил да даде името х. 46 00:02:36,160 --> 00:02:40,760 Това завършва декларацията на функцията или прототип. 47 00:02:40,760 --> 00:02:43,320 Фигурни скоби около останалата част от функцията 48 00:02:43,320 --> 00:02:45,870 обозначава началото и в края на тялото на функцията, 49 00:02:45,870 --> 00:02:48,320 определението на самата функция. 50 00:02:48,320 --> 00:02:50,300 Square е доста проста функция. 51 00:02:50,300 --> 00:02:54,100 Имам само 1 ред, тъй като всичко, което трябва да направите, е да се размножават х от само себе си. 52 00:02:54,100 --> 00:02:59,250 Думата връщане определя изходната стойност и води до края на функцията. 53 00:02:59,250 --> 00:03:03,430 За да използвате функцията на площада, ние трябва да предоставят съответните входове 54 00:03:03,430 --> 00:03:05,310 и след заснемане на продукцията. 55 00:03:05,310 --> 00:03:08,140 Тук ще видите няколко начини за това. 56 00:03:08,140 --> 00:03:13,600 Ние можем да минем в суров Int, като 6, или ние можем да преминем в променлива като. 57 00:03:13,600 --> 00:03:15,700 Имайте предвид, че всеки път, когато ние наричаме квадрат, 58 00:03:15,700 --> 00:03:18,330 заснемане на продукцията в променлива и след това го разпечатате. 59 00:03:18,330 --> 00:03:22,690 Въпреки това, ние не трябва да се съхранява на връщаната стойност в променлива и след това да отпечатате. 60 00:03:22,690 --> 00:03:27,090 Ние можем просто да го изпратите директно ФОРМАТ правим, когато сме 10 квадратни, 61 00:03:27,090 --> 00:03:30,580 но това не означава, че ние нямаме достъп до връщаната стойност от 10 квадратни 62 00:03:30,580 --> 00:03:32,230 другаде в кода. 63 00:03:32,230 --> 00:03:34,890 Нека разгледаме един прост пример. 64 00:03:34,890 --> 00:03:38,750 >> Този път, ние ще обобщим две плувки заедно, така че можем да видим това, което изглежда като функция 65 00:03:38,750 --> 00:03:41,220 когато има два входа, вместо само 1. 66 00:03:41,220 --> 00:03:43,950 Както можете да видите, че не е много по-различно. 67 00:03:43,950 --> 00:03:47,330 Всичко, което правим, е да добавите в 2-ри аргумент, с плаваща запетая с име б, 68 00:03:47,330 --> 00:03:51,820 списъкът с аргументите, използвайки запетайка да го отдели от първия аргумент, флоат. 69 00:03:51,820 --> 00:03:55,550 Така че, квадрат и функции сума са доста лесни за разбиране 70 00:03:55,550 --> 00:03:58,930 защото те са еквивалентни на функции, които сте виждали преди в клас по математика. 71 00:03:58,930 --> 00:04:01,610 Сега, нека да разгледаме функция, която е малко по-различен. 72 00:04:01,610 --> 00:04:04,620 Вместо да върне стойност, тя променя държава. 73 00:04:04,620 --> 00:04:07,260 Това е известно като страничен ефект. 74 00:04:07,260 --> 00:04:10,750 В тази програма, функцията printf_fudd_style 75 00:04:10,750 --> 00:04:13,410 има възвръщаемост тип, който не сме виждали преди, невалидни. 76 00:04:13,410 --> 00:04:16,730 >> Void се използва, за да се каже, че функцията не връща нищо. 77 00:04:16,730 --> 00:04:19,410 Не са променливи от тип невалидни, 78 00:04:19,410 --> 00:04:22,760 така че, ако се опитате да върнете нещо от функция като printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 компилаторът ще ти крещя. 80 00:04:24,290 --> 00:04:29,390 Вътре printf_fudd_style, виждаме, че докато функцията все още изпълнява задача, 81 00:04:29,390 --> 00:04:31,890 а именно, смяна на всички Rs Ws 82 00:04:31,890 --> 00:04:36,380 точка на функцията е да се измени низ и след това да го отпечатате на екрана, 83 00:04:36,380 --> 00:04:39,400 промяна на състоянието на програмата, вместо да се завърне в резултат. 84 00:04:39,400 --> 00:04:43,700 Използването на тази функция е много като използвате нашия площад и функции сума, 85 00:04:43,700 --> 00:04:46,950 освен ние не се съхранява резултата в дадена променлива или да го премине на разстояние до друга функция 86 00:04:46,950 --> 00:04:49,520 тъй като няма резултат, да се говори за. 87 00:04:49,520 --> 00:04:53,180 Така че, когато се съставят и работи нашата програма елмерфудовски, 88 00:04:53,180 --> 00:04:56,970 ще видите, че "мошенически заек!" получава трансформира правото да 89 00:04:56,970 --> 00:04:58,730 "Wascally Wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> И накрая, има една повече функции си струва обсъждането 91 00:05:02,250 --> 00:05:06,810 след като сте го използва във всяка програма на C, която някога съм писал, основно. 92 00:05:06,810 --> 00:05:09,450 Основна функция много като всяка друга. 93 00:05:09,450 --> 00:05:13,580 Има връщания тип, име, списък от аргументи и тяло. 94 00:05:13,580 --> 00:05:16,110 Завръщането на главния винаги е едно цяло число, 95 00:05:16,110 --> 00:05:19,120 и това число е да съобщават статуса на програмата, когато тя завършва. 96 00:05:19,120 --> 00:05:23,360 >> Ли го изпълните успешно, или не го прекратят предсрочно поради грешка? 97 00:05:23,360 --> 00:05:26,390 Връщайки се към нула показва, успешен план, 98 00:05:26,390 --> 00:05:29,510 и връщане на всяка ненулева стойност показва грешка. 99 00:05:29,510 --> 00:05:31,950 В зависимост от вида на програмата, която пишете, 100 00:05:31,950 --> 00:05:34,960 връщане на различни кодове за различни грешки могат да бъдат полезни 101 00:05:34,960 --> 00:05:37,210 за хора, които използват програмата си по-късно. 102 00:05:37,210 --> 00:05:40,220 Мрежови аргументи са малко по-сложни. 103 00:05:40,220 --> 00:05:42,150 >> Списъкът аргумент може да е празно, 104 00:05:42,150 --> 00:05:45,330 , които показват, чрез писмено невалидни между скобите, 105 00:05:45,330 --> 00:05:50,220 или списък може да има два аргумента: INT и набор от Чар * S. 106 00:05:50,220 --> 00:05:52,820 Те се използват, когато вашата програма възнамерява да използва 107 00:05:52,820 --> 00:05:56,490 аргументите, подадени на командния ред, когато програмата се извиква. 108 00:05:56,490 --> 00:05:59,690 INT аргумент обикновено се нарича argc, 109 00:05:59,690 --> 00:06:03,300 и е равна на дължината на Чар масив *, известен като argv. 110 00:06:03,300 --> 00:06:07,080 Argv съдържа аргументите на командния ред, преминали в програмата. 111 00:06:07,080 --> 00:06:11,440 В друг кратък, ние ще говорим за това как да ги използвам по-подробно. 112 00:06:11,440 --> 00:06:15,220 За сега, можете да се чувстват свободно да декларират Основната така или иначе. 113 00:06:15,220 --> 00:06:19,410 Обикновено избират да го напиша по-краткия начин, без аргументи, когато е възможно. 114 00:06:19,410 --> 00:06:22,230 >> Сега, че знаете как да се напише функция, 115 00:06:22,230 --> 00:06:25,030 вие сте добре на пътя си към разработване на по-големи, по-сложни програми. 116 00:06:25,030 --> 00:06:29,740 Моето име е Нейт Hardison. Това е CS50.