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 Когда вы пишете материал на экран с помощью Printf, 8 00:00:26,770 --> 00:00:29,380 вы на самом деле с помощью функции называются Printf. 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 Первое слово, которое вы видите на функцию, INT, 34 00:01:51,860 --> 00:01:57,460 определяет тип возвращаемого значения функции, то есть, типа C выходной функции. 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 Именование функции надлежащим особенно важно 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 Площадь занимает всего 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 Площадь довольно простая функция. 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 Мы могли бы просто отправить его прямо на Printf, как мы делаем, когда мы квадрат 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 >> На этот раз мы будем подводить 2 поплавка вместе, так что мы можем видеть, что функция выглядит 65 00:03:38,750 --> 00:03:41,220 когда он получил 2 входа, а не только 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 >> Пустота используются для говорим, что функция не возвращает ничего. 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 а именно, переход всех грн для 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 Поэтому, когда мы скомпилировать и запустить наш Elmer Fudd программы, 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 >> Наконец, есть еще 1 функция стоит обсуждать 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 Тип возвращаемого значения основных всегда INT, 95 00:05:16,110 --> 00:05:19,120 и это Int используется для передачи состояния программы, когда он закончится. 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 или списка может иметь 2 аргумента: 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 аргумент обычно называют агдс, 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 Меня зовут Нейт Хардисон. Это CS50.