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.