1 00:00:00,000 --> 00:00:04,664 2 00:00:04,664 --> 00:00:05,580 ДАГ Lloyd: Гаразд. 3 00:00:05,580 --> 00:00:08,877 Так що тепер давайте візьмемося дійсно велика тема, функції. 4 00:00:08,877 --> 00:00:11,460 До цих пір в процесі, все Програми, які ми були пишучі 5 00:00:11,460 --> 00:00:12,969 були написані всередині основної. 6 00:00:12,969 --> 00:00:14,260 Вони досить прості програми. 7 00:00:14,260 --> 00:00:16,940 Вам не потрібно, щоб усі ці філії та речей відбувається. 8 00:00:16,940 --> 00:00:18,773 Ми можемо просто умістити його всередині основної і 9 00:00:18,773 --> 00:00:20,407 не одержати страшно переважною. 10 00:00:20,407 --> 00:00:22,990 Але, як курс продовжується і як ви почнете розробляти програми 11 00:00:22,990 --> 00:00:26,260 самостійно, вони, ймовірно, буде щоб почати, щоб отримати набагато більше, ніж 10 12 00:00:26,260 --> 00:00:27,200 або 15 рядків. 13 00:00:27,200 --> 00:00:31,400 Ви можете отримати сотні або тисячі або десятки тисяч рядків коду. 14 00:00:31,400 --> 00:00:34,690 І це насправді не що з розуму думка. 15 00:00:34,690 --> 00:00:39,720 Як така, вона, ймовірно, не дуже гарна ідея зберегти всі всередині основної. 16 00:00:39,720 --> 00:00:43,240 Це може стати трохи важко знайти те, що ви шукаєте, якщо ви зробите це. 17 00:00:43,240 --> 00:00:47,040 >> На щастя, хоча C, і в значній мірі кожна мова програмування, який 18 00:00:47,040 --> 00:00:50,386 може працювати, дозволяє нам написати функції. 19 00:00:50,386 --> 00:00:52,260 І я просто хочу, щоб Візьміть швидкий сторону тут 20 00:00:52,260 --> 00:00:54,971 відзначити, що функцій одна область інформатики. 21 00:00:54,971 --> 00:00:57,970 І ви будете бачити більше з них у різні точки протягом усього курсу 22 00:00:57,970 --> 00:00:59,290 і якщо ви будете продовжувати далі. 23 00:00:59,290 --> 00:01:02,280 Там, де є багато синоніми одного і того ж слова. 24 00:01:02,280 --> 00:01:03,390 Так ми називаємо функції. 25 00:01:03,390 --> 00:01:05,980 Але ви могли б також почути їх згадується як процедур, 26 00:01:05,980 --> 00:01:09,570 або методи, зокрема, якщо ви коли-небудь зробити будь об'єктно-орієнтованого програмування 27 00:01:09,570 --> 00:01:11,950 before-- і не турбуватися якщо у вас ні, не 28 00:01:11,950 --> 00:01:14,280 великий deal-- але в аудиторські орієнтовані мови 29 00:01:14,280 --> 00:01:16,129 часто звані методами. 30 00:01:16,129 --> 00:01:17,670 Іноді вони називаються підпрограмами. 31 00:01:17,670 --> 00:01:20,690 Але вони насправді всі вони відносяться до того ж основної ідеї. 32 00:01:20,690 --> 00:01:22,480 >> Давайте подивимося, що ця ідея. 33 00:01:22,480 --> 00:01:23,310 Що таке функція? 34 00:01:23,310 --> 00:01:26,470 Ну функція дійсно не більше, ніж чорний ящик. 35 00:01:26,470 --> 00:01:31,430 Чорний ящик, який має безліч нульовий або більше входів і один вихід. 36 00:01:31,430 --> 00:01:33,420 Так, наприклад, ця може бути функцією. 37 00:01:33,420 --> 00:01:35,510 Ця функція називається функ. 38 00:01:35,510 --> 00:01:39,330 І це займає три входи A, B і С. 39 00:01:39,330 --> 00:01:42,580 І всередині цього чорного ящика, ми не знаю точно, що він робить, 40 00:01:42,580 --> 00:01:45,100 але він обробляє входи в деякому роді, а потім він 41 00:01:45,100 --> 00:01:48,680 дає один вихід, в цьому випадку, м 42 00:01:48,680 --> 00:01:50,504 Тепер, щоб зробити його трохи менш абстрактним, ми 43 00:01:50,504 --> 00:01:52,420 Можна сказати, що, можливо, ми є функція під назвою 44 00:01:52,420 --> 00:01:58,750 Додамо, що займає три входи A, B, і С і обробляє вихідні дані в деякому роді 45 00:01:58,750 --> 00:02:01,010 всередині чорного ящика до виробляти один вихід. 46 00:02:01,010 --> 00:02:05,190 Таким чином, в цьому випадку, якщо додати займає 3, 6, і 7. 47 00:02:05,190 --> 00:02:07,020 Десь усередині додати функцію, ми б 48 00:02:07,020 --> 00:02:09,750 очікувати, що вони будуть додані разом для отримання вихідного сигналу, який 49 00:02:09,750 --> 00:02:13,220 3 плюс 6 плюс 7 або 16. 50 00:02:13,220 --> 00:02:17,940 >> Точно так само, у вас є функція під назвою мульт, який приймає два входи, а і б, 51 00:02:17,940 --> 00:02:21,070 обробляє їх в деякому роді такий що вихід функції 52 00:02:21,070 --> 00:02:22,920 є продуктом двох входів. 53 00:02:22,920 --> 00:02:25,080 Два входи перемножуються. 54 00:02:25,080 --> 00:02:29,150 4 і 5 передається в Mult, щось трапиться, вихід ми очікуємо 55 00:02:29,150 --> 00:02:31,090 20. 56 00:02:31,090 --> 00:02:32,507 Чому ми називаємо це чорний ящик? 57 00:02:32,507 --> 00:02:34,840 Ну, якщо ми не написання Функції себе, що 58 00:02:34,840 --> 00:02:36,869 ми зробили зовсім небагато досі CS50. 59 00:02:36,869 --> 00:02:39,910 Ми бачили друку F, наприклад, що це функція, яку ми не написати 60 00:02:39,910 --> 00:02:42,305 самі, але ми використовуємо весь час. 61 00:02:42,305 --> 00:02:44,180 Якщо ми не пишемо функції самі, 62 00:02:44,180 --> 00:02:48,450 ми насправді не потрібно знати, як це насправді реалізовані під капотом. 63 00:02:48,450 --> 00:02:51,710 >> Так, наприклад, чорний ящик I тільки що показав вам для множення, 64 00:02:51,710 --> 00:02:53,740 сть а, б може бути defined-- і це тільки 65 00:02:53,740 --> 00:02:57,902 деякі pseudocode-- може бути визначається як вихід через раз б. 66 00:02:57,902 --> 00:02:58,860 Це має сенс, вірно. 67 00:02:58,860 --> 00:03:01,370 Якщо у нас є функція під назвою мульт, який приймає два входи. 68 00:03:01,370 --> 00:03:04,750 Ми б очікувати, що результат буде бути два входи перемножуються, 69 00:03:04,750 --> 00:03:06,240 а раз б. 70 00:03:06,240 --> 00:03:09,170 Але мульт також може бути реалізовані, як це, 71 00:03:09,170 --> 00:03:13,150 ми маємо змінну лічильника на отримати набір всередині Mult 0. 72 00:03:13,150 --> 00:03:18,000 А потім ми повторюємо цей процес б раз додати до лічильника. 73 00:03:18,000 --> 00:03:24,270 Наприклад, якщо ми помножимо 3а по 5б, ми могли б сказати встановити лічильник на 0, 74 00:03:24,270 --> 00:03:27,700 повторити п'ять разів, додати 3 до прилавка. 75 00:03:27,700 --> 00:03:34,490 Отже, ми починаємо з 0, а потім ми робимо Це в п'ять разів 3, 6, 9, 12, 15. 76 00:03:34,490 --> 00:03:37,500 Це той же самий результат. Ми досі отримати 3 разів 5 разів 77 00:03:37,500 --> 00:03:39,500 реалізація відрізняється. 78 00:03:39,500 --> 00:03:41,490 >> Це означає, що ми коли ми говоримо, чорний ящик. 79 00:03:41,490 --> 00:03:44,406 Це просто означає, що ми дійсно не піклуються як це реалізовано під капотом 80 00:03:44,406 --> 00:03:46,170 тих пір, поки вихід, що ми очікуємо. 81 00:03:46,170 --> 00:03:49,045 Насправді, це частина договору використання функції, зокрема, 82 00:03:49,045 --> 00:03:50,630 Функції, які пишуть інші. 83 00:03:50,630 --> 00:03:53,980 Поведінка завжди буде типовими, непередбачуваний 84 00:03:53,980 --> 00:03:55,420 на основі імені функції. 85 00:03:55,420 --> 00:03:57,500 І ось чому це дійсно важливо, коли ви пишете функції 86 00:03:57,500 --> 00:04:00,020 або коли інші люди пишуть Функції, які ви могли б використовувати, 87 00:04:00,020 --> 00:04:03,590 що ці функції мають ясно, щодо очевидні імена, 88 00:04:03,590 --> 00:04:04,990 і добре документовані. 89 00:04:04,990 --> 00:04:08,560 Що, звичайно, випадок для функції, як друк ф. 90 00:04:08,560 --> 00:04:09,860 >> Так чому ж ми використовуємо функції? 91 00:04:09,860 --> 00:04:14,220 Ну, як я сказав раніше, якщо ми пишемо весь наш код всередині головних 92 00:04:14,220 --> 00:04:17,120 можете отримати дійсно громіздким і справді складна. 93 00:04:17,120 --> 00:04:19,980 Функції дозволяють нам здатність організувати речі і розбити 94 00:04:19,980 --> 00:04:24,540 дуже складне завдання в багато більш керовані частини суб. 95 00:04:24,540 --> 00:04:28,130 Функції також дозволяють нам спростити процес кодування. 96 00:04:28,130 --> 00:04:33,080 Це набагато простіше налагодити 10 Функція лінія проти лінії 100 97 00:04:33,080 --> 00:04:35,890 функція або функція в 1000 лінія. 98 00:04:35,890 --> 00:04:38,400 Якщо у нас є тільки для налагодження маленькі шматочки в той час, 99 00:04:38,400 --> 00:04:42,110 або написати невеликі шматочки в той час, це робить цей досвід програмування 100 00:04:42,110 --> 00:04:43,070 набагато краще. 101 00:04:43,070 --> 00:04:44,910 Повірте мені на тому. 102 00:04:44,910 --> 00:04:48,400 >> Нарешті, якщо ми пишемо функції ми можна повторно використовувати ці різні частини. 103 00:04:48,400 --> 00:04:49,880 Функції можуть бути перероблені. 104 00:04:49,880 --> 00:04:51,880 Вони можуть бути використані в одна програма або інший. 105 00:04:51,880 --> 00:04:53,713 Ви вже написали функція, все, що вам 106 00:04:53,713 --> 00:04:56,530 потрібно зробити, це сказати, що програма де знайти цю функцію. 107 00:04:56,530 --> 00:04:59,680 Ми утилізації та використання друкувати е більше 40 років. 108 00:04:59,680 --> 00:05:02,150 Але це було тільки один раз написано. 109 00:05:02,150 --> 00:05:04,270 Досить корисно, правильно. 110 00:05:04,270 --> 00:05:04,830 Добре. 111 00:05:04,830 --> 00:05:06,040 Так функції великі. 112 00:05:06,040 --> 00:05:06,860 Ми знаємо, що. 113 00:05:06,860 --> 00:05:08,700 Тепер давайте почнемо писати їх. 114 00:05:08,700 --> 00:05:10,830 Давайте почнемо отримувати їх у наших програмах. 115 00:05:10,830 --> 00:05:13,869 Для того, щоб зробити це, перший що ми робимо, це оголосити функцію. 116 00:05:13,869 --> 00:05:16,160 Коли ви оголошуєте функцію те, що ви робите в основному 117 00:05:16,160 --> 00:05:18,900 говорить компілятору, агов, тільки так ви знаєте, 118 00:05:18,900 --> 00:05:20,850 Я збираюся писати функція пізніше 119 00:05:20,850 --> 00:05:22,987 і ось що він буде виглядати. 120 00:05:22,987 --> 00:05:24,820 Причина цього в тому, що компілятори можуть 121 00:05:24,820 --> 00:05:27,900 зробити деякі дивні речі, якщо вони бачать набір символів 122 00:05:27,900 --> 00:05:29,560 що вони не знайомі. 123 00:05:29,560 --> 00:05:33,000 Таким чином, ми просто дати компілятору очолює, я створюю функцію 124 00:05:33,000 --> 00:05:35,492 і він збирається зробити це. 125 00:05:35,492 --> 00:05:38,450 Оголошення функцій зазвичай якщо Ви організовує свій код таким чином, 126 00:05:38,450 --> 00:05:41,872 що інші зможуть зрозуміти і використовувати, 127 00:05:41,872 --> 00:05:44,330 Ви взагалі хочете, щоб покласти все Ваші оголошення функцій 128 00:05:44,330 --> 00:05:48,220 на самому верху вашого коду, прямо перш ніж почати писати основний навіть. 129 00:05:48,220 --> 00:05:50,770 І зручно, є дуже стандартна форма 130 00:05:50,770 --> 00:05:53,500 що кожна функція декларація наступним чином. 131 00:05:53,500 --> 00:05:56,090 Вони всі в значній мірі виглядати наступним. 132 00:05:56,090 --> 00:06:01,440 Є три частини до функції Декларація, повертається тип, ім'я, 133 00:06:01,440 --> 00:06:03,420 і список аргументів. 134 00:06:03,420 --> 00:06:07,180 >> Тепер тип повернення Яких Мінлива вихід функції волі. 135 00:06:07,180 --> 00:06:10,710 Так, наприклад, якщо ми згадаємо Хвилину тому до множення двох 136 00:06:10,710 --> 00:06:15,690 Функція номера, то, що ми очікуємо, якщо помножимо ціле число ціле число 137 00:06:15,690 --> 00:06:18,502 вихід буде ймовірно, ціле, право. 138 00:06:18,502 --> 00:06:20,710 Множиться два цілих числа разом, ви отримаєте ціле число. 139 00:06:20,710 --> 00:06:24,167 Так тип повертається що Функція буде Int. 140 00:06:24,167 --> 00:06:26,000 Ім'я це те, що ви хочете звернути вашу функції. 141 00:06:26,000 --> 00:06:29,330 Це, ймовірно, найменш важливим частина функції декларації, 142 00:06:29,330 --> 00:06:30,827 з точки зору функціональності. 143 00:06:30,827 --> 00:06:33,160 Але насправді, ймовірно, один з найбільш важливих частин 144 00:06:33,160 --> 00:06:36,243 в оголошенні функції в умовах знаючи, що насправді функція 145 00:06:36,243 --> 00:06:37,120 робить. 146 00:06:37,120 --> 00:06:40,474 Якщо ви назвати вашу функцію F або г або год або таємниця або щось подібне, 147 00:06:40,474 --> 00:06:42,765 ви, ймовірно, збирається отримати трохи спіткнувся, намагаючись 148 00:06:42,765 --> 00:06:44,650 згадати, що ці функції роблять. 149 00:06:44,650 --> 00:06:47,880 Тому важливо, щоб дати вашій осмислені імена функції. 150 00:06:47,880 --> 00:06:51,030 >> Нарешті, список аргументів розділені комою 151 00:06:51,030 --> 00:06:55,260 всіх входів у вашій функції, кожен з яких має тип та ім'я. 152 00:06:55,260 --> 00:06:57,840 Так що не тільки у вас є, щоб вказати, який тип змінної 153 00:06:57,840 --> 00:07:00,760 вихід функція, Ви також хочете, щоб вказати 154 00:07:00,760 --> 00:07:07,694 який тип і типи змінних в Функція буде приймати в якості вхідних. 155 00:07:07,694 --> 00:07:08,860 Так давайте зробимо приклад тут. 156 00:07:08,860 --> 00:07:10,220 Давайте просто подивимося у більш конкретному один. 157 00:07:10,220 --> 00:07:13,130 Так ось приклад функції Заява для функції, 158 00:07:13,130 --> 00:07:14,925 хотів би додати два цілих числа разом. 159 00:07:14,925 --> 00:07:17,800 Сума двох цілих чисел буде бути цілим числом, а також, як ми тільки що 160 00:07:17,800 --> 00:07:18,450 обговорюється. 161 00:07:18,450 --> 00:07:21,610 І тому тип повернення тут, в зелений, буде Int. 162 00:07:21,610 --> 00:07:25,190 Це просто говорить нам, що додати два цілих збирається, врешті-решт, 163 00:07:25,190 --> 00:07:28,799 вихід, або виплюнути назад до нас, ціле число. 164 00:07:28,799 --> 00:07:31,590 Враховуючи те, що ця функція робить ми хочу, щоб дати йому значуще ім'я. 165 00:07:31,590 --> 00:07:33,630 Додати два цілих здається доцільно, враховуючи 166 00:07:33,630 --> 00:07:37,574 ми беремо два цілих числа в якості вхідних і, сподіваюся, додавши їх разом. 167 00:07:37,574 --> 00:07:40,240 Це може бути трохи громіздким Ім'я та відверто ця функція 168 00:07:40,240 --> 00:07:42,430 Ймовірно, немає необхідності так як ми маємо додавання 169 00:07:42,430 --> 00:07:46,310 Оператор, якщо ви пам'ятаєте з нашого обговорення операторів, раніше. 170 00:07:46,310 --> 00:07:49,650 Але давайте просто скажемо, заради Аргумент, що ця функція корисна 171 00:07:49,650 --> 00:07:52,860 і так ми будемо називати його додати два цілих. 172 00:07:52,860 --> 00:07:55,230 Нарешті, ця функція приймає два входи. 173 00:07:55,230 --> 00:07:56,960 Кожен з яких є цілим числом. 174 00:07:56,960 --> 00:07:59,900 Отже, ми маємо цю кому список розділених входів. 175 00:07:59,900 --> 00:08:02,830 Тепер ми зазвичай хочуть дати ім'я кожному з них 176 00:08:02,830 --> 00:08:05,070 таким чином, що вони можуть бути використані у функції. 177 00:08:05,070 --> 00:08:07,180 Імена не страшно важливо. 178 00:08:07,180 --> 00:08:11,400 >> У цьому випадку, ми не обов'язково є якийсь сенс, прикріплений до них. 179 00:08:11,400 --> 00:08:13,140 Таким чином, ми можемо просто назвати їх і б. 180 00:08:13,140 --> 00:08:14,257 Це абсолютно нормально. 181 00:08:14,257 --> 00:08:16,090 Однак, якщо ви знайдете самостійно в ситуації, 182 00:08:16,090 --> 00:08:19,497 де імена змінних дійсно може бути важливим, 183 00:08:19,497 --> 00:08:21,830 Ви можете називати їх щось інше, ніж а і Ь 184 00:08:21,830 --> 00:08:24,701 щоб дати їм щось більше символічно значущим. 185 00:08:24,701 --> 00:08:27,700 Але в даному випадку, ми насправді не знаєте що-небудь ще про функції. 186 00:08:27,700 --> 00:08:29,320 Ми просто хочемо, щоб додати два цілих числа. 187 00:08:29,320 --> 00:08:32,429 Таким чином, ми просто зателефонувати тих, цілі числа а і б. 188 00:08:32,429 --> 00:08:33,990 Ось один приклад. 189 00:08:33,990 --> 00:08:36,287 >> Чому б вам не взяти другий думати про це, 190 00:08:36,287 --> 00:08:38,870 як би ви написати функцію Заява для функції, 191 00:08:38,870 --> 00:08:42,940 примножує двох чисел з плаваючою комою? 192 00:08:42,940 --> 00:08:45,910 Ви пам'ятаєте, що таке число з плаваючою комою? 193 00:08:45,910 --> 00:08:48,120 Що б ця функція Заява виглядає? 194 00:08:48,120 --> 00:08:53,330 Я насправді рекомендуємо Вам призупинити відео сюди і скільки часу вам потрібно. 195 00:08:53,330 --> 00:08:55,521 Подумайте про те, що це Оголошення функції буде? 196 00:08:55,521 --> 00:08:56,770 Що б тип повертається бути? 197 00:08:56,770 --> 00:08:58,103 Що б значуще ім'я буде? 198 00:08:58,103 --> 00:08:59,580 Що б входи бути? 199 00:08:59,580 --> 00:09:03,190 Так чому б вам не зробити паузу відео тут і написати план функцію декларацію 200 00:09:03,190 --> 00:09:07,640 для функції, яка буде множити дві плаваючою комою разом. 201 00:09:07,640 --> 00:09:09,330 Сподіваюся, ви паузу відео. 202 00:09:09,330 --> 00:09:12,950 >> Отже, давайте поглянемо на приклад однією з можливих декларації. 203 00:09:12,950 --> 00:09:17,340 Поплавок Mult дві реала плавати х, у поплавця. 204 00:09:17,340 --> 00:09:19,090 Добуток двох чисел з плаваючою точкою, 205 00:09:19,090 --> 00:09:21,710 які є згадати, як ми представляють реальні цифри 206 00:09:21,710 --> 00:09:26,770 або номери з десятковими значеннями в С, буде число з плаваючою крапкою. 207 00:09:26,770 --> 00:09:28,570 Коли ви примножуєте десяткової в десятковому, 208 00:09:28,570 --> 00:09:30,460 ви, ймовірно, збирається отримати десяткової. 209 00:09:30,460 --> 00:09:31,960 Ви хочете, щоб дати йому відповідну ім'я. 210 00:09:31,960 --> 00:09:33,810 Помножте дві реала здається нормально. 211 00:09:33,810 --> 00:09:36,620 Але ви могли б дійсно назвати це Mult двома поплавками, або Mult поплавці. 212 00:09:36,620 --> 00:09:39,540 Нічого подібного, до тих пір, як це дав йому актуальне значення на те, що 213 00:09:39,540 --> 00:09:41,469 це чорний ящик збирався зробити. 214 00:09:41,469 --> 00:09:44,260 І знову ж, в цьому випадку, ми не здається, є якийсь сенс надає 215 00:09:44,260 --> 00:09:46,390 на іменами змінні ми перехідні в, 216 00:09:46,390 --> 00:09:48,645 так що ми просто називаємо їх х та у. 217 00:09:48,645 --> 00:09:51,020 Тепер, якщо ви їх називаєте щось ще, що це абсолютно нормально. 218 00:09:51,020 --> 00:09:53,310 Справді, якщо ви зробили ця декларація, а 219 00:09:53,310 --> 00:09:55,450 замість цього використовуючи двійників поплавців, якщо згадати, 220 00:09:55,450 --> 00:09:59,100 що подвоюється це інша спосіб більш точно 221 00:09:59,100 --> 00:10:02,330 вказати реальні цифри або з плаваючою комою змінні. 222 00:10:02,330 --> 00:10:03,620 Це абсолютно нормально теж. 223 00:10:03,620 --> 00:10:04,670 Або один з тих, було б прекрасно. 224 00:10:04,670 --> 00:10:06,711 Насправді, є декілька різні комбінації 225 00:10:06,711 --> 00:10:08,410 способів заявити цю функцію. 226 00:10:08,410 --> 00:10:10,884 Але ці дві досить хороші. 227 00:10:10,884 --> 00:10:12,550 Ми оголосили функцію, це здорово. 228 00:10:12,550 --> 00:10:15,700 Ми сказали, що це компілятор є те, що ми збираємося робити. 229 00:10:15,700 --> 00:10:17,630 Тепер давайте насправді писати цю функцію. 230 00:10:17,630 --> 00:10:20,750 Давайте дамо йому визначення, таким чином, що всередині чорної скриньки 231 00:10:20,750 --> 00:10:22,840 передбачувана поведінка відбувається. 232 00:10:22,840 --> 00:10:26,270 Насправді, ми множення двох дійсних номери разом, або додавання телефонного номера 233 00:10:26,270 --> 00:10:29,760 разом, або робити те, що це що ми попросили нашу функцію спільного. 234 00:10:29,760 --> 00:10:32,780 >> Таким чином, справді, давайте спробуємо визначити і помножити дві реала, який ми тільки що 235 00:10:32,780 --> 00:10:35,350 говорили про другу тому. 236 00:10:35,350 --> 00:10:38,560 Тепер початок визначення функції 237 00:10:38,560 --> 00:10:41,720 виглядає майже точно так само, як функція декларації. 238 00:10:41,720 --> 00:10:43,170 У мене є і з них. 239 00:10:43,170 --> 00:10:47,770 У верхній частині знаходиться оголошення функції, тип, назва, розділені комою аргумент 240 00:10:47,770 --> 00:10:49,410 Список, крапка з комою. 241 00:10:49,410 --> 00:10:53,800 Крапка з комою вказує, що що оголошення функції. 242 00:10:53,800 --> 00:10:57,060 Початок функції визначення виглядає майже в точності 243 00:10:57,060 --> 00:11:03,790 те ж саме, тип, ім'я, розділені комою Список аргументів, немає коми, 244 00:11:03,790 --> 00:11:05,206 відкрити фігурну дужку. 245 00:11:05,206 --> 00:11:07,580 Відкрита фігурна дужка, як ми робили з основною, 246 00:11:07,580 --> 00:11:09,540 означає, що ми зараз починає визначати 247 00:11:09,540 --> 00:11:14,567 що відбувається всередині чорного ящика, що ми вирішили назвати Кілька дві реала. 248 00:11:14,567 --> 00:11:15,900 Ось один із способів, щоб його реалізувати. 249 00:11:15,900 --> 00:11:20,370 Ми могли б сказати, що ми могли б оголосити новий змінна типу поплавця називається продукт 250 00:11:20,370 --> 00:11:24,020 і призначити цю змінну у вартість х разів у. 251 00:11:24,020 --> 00:11:27,306 А потім повернутися продукт. 252 00:11:27,306 --> 00:11:28,430 Що означає повернення тут. 253 00:11:28,430 --> 00:11:31,090 Ну повернення шлях зазначимо, що, як 254 00:11:31,090 --> 00:11:33,400 ми передаємо вихід назад. 255 00:11:33,400 --> 00:11:38,160 Так щось повернути, так само, як, це вихід чорного ящика. 256 00:11:38,160 --> 00:11:40,732 Так от, як ви це робите. 257 00:11:40,732 --> 00:11:42,190 Ось ще один спосіб її реалізації. 258 00:11:42,190 --> 00:11:45,050 Ми могли б просто повернути х разів у. 259 00:11:45,050 --> 00:11:45,870 х поплавок. 260 00:11:45,870 --> 00:11:46,660 у з плаваючою крапкою. 261 00:11:46,660 --> 00:11:48,490 Так х разів у також поплавок. 262 00:11:48,490 --> 00:11:50,750 Ми навіть не потрібно створити ще одну змінну. 263 00:11:50,750 --> 00:11:56,750 Так що це інший спосіб здійснити той же чорний ящик. 264 00:11:56,750 --> 00:11:58,570 >> Тепер скористатися моментом, призупинити відео ще раз, 265 00:11:58,570 --> 00:12:01,680 і спробувати визначити додати два цілих, який є іншої функції, що ми 266 00:12:01,680 --> 00:12:03,090 говорили про хвилину тому. 267 00:12:03,090 --> 00:12:06,440 Знову тут, я поклав функції Декларація, і так як крапка з комою, 268 00:12:06,440 --> 00:12:08,420 і відкрита фігурна дужка і закритим кучеряве 269 00:12:08,420 --> 00:12:12,080 дужка, щоб вказати, де ми будемо заповнювати у вмісті додати два цілих, 270 00:12:12,080 --> 00:12:15,530 так що ми визначаємо зокрема Поведінка всередині чорного ящика. 271 00:12:15,530 --> 00:12:16,380 Так призупинити відео. 272 00:12:16,380 --> 00:12:18,790 І взяти стільки часу, скільки Ви повинні спробувати і визначити 273 00:12:18,790 --> 00:12:25,040 реалізація додати два цілих, наприклад що, коли функція виводить значення, 274 00:12:25,040 --> 00:12:29,209 він робить, насправді, повернення сума двох входів. 275 00:12:29,209 --> 00:12:32,000 Так само, як і в попередньому прикладі, Є кілька різних способів 276 00:12:32,000 --> 00:12:34,210 що ви могли б реалізувати додати два цілих. 277 00:12:34,210 --> 00:12:35,130 Ось один. 278 00:12:35,130 --> 00:12:37,172 У тут, в помаранчевий У мене просто були деякі comments-- 279 00:12:37,172 --> 00:12:38,880 Я просто додав деякі коментарі, щоб вказати, 280 00:12:38,880 --> 00:12:41,400 що відбувається в кожному рядку коду. 281 00:12:41,400 --> 00:12:45,430 Так що я оголосити змінну називається сума типу Int. 282 00:12:45,430 --> 00:12:47,279 Я говорю сума дорівнює плюс б. 283 00:12:47,279 --> 00:12:50,070 Ось де ми насправді робимо робота додавання А і В разом. 284 00:12:50,070 --> 00:12:51,850 І я повернуся суму. 285 00:12:51,850 --> 00:12:56,460 І, що має сенс, оскільки сума змінна типу Int. 286 00:12:56,460 --> 00:13:00,180 І те, що тип даних, що це функція повідомляє мені, що збирається вивести? 287 00:13:00,180 --> 00:13:00,680 Int. 288 00:13:00,680 --> 00:13:03,072 Так я повертаюся суму, яка є цілої змінної. 289 00:13:03,072 --> 00:13:06,030 І, що має сенс, враховуючи те, що ми Оголошення і визначення нашу функцію 290 00:13:06,030 --> 00:13:07,320 зробити. 291 00:13:07,320 --> 00:13:09,700 >> Тепер ви можете також визначити функція таким чином, 292 00:13:09,700 --> 00:13:15,260 INT сума дорівнює плюс В- пропустити що в першу чергу, а потім step--, повернутися суму. 293 00:13:15,260 --> 00:13:17,760 Тепер ви могли б також реалізовані це так, 294 00:13:17,760 --> 00:13:19,180 який я дуже не рекомендую. 295 00:13:19,180 --> 00:13:22,540 Це поганий стиль для одного що і справді поганий дизайн, 296 00:13:22,540 --> 00:13:24,420 але це, насправді, роботи. 297 00:13:24,420 --> 00:13:30,199 Якщо ви берете цей код, який INT додати погану суматор точка C, і використовувати його. 298 00:13:30,199 --> 00:13:31,990 Це насправді додати два числа разом. 299 00:13:31,990 --> 00:13:37,632 Це дуже погана реалізація цього конкретного поведінки. 300 00:13:37,632 --> 00:13:38,340 Але він працює. 301 00:13:38,340 --> 00:13:41,200 Це просто тут для ілюстрації і справа, що ми насправді не 302 00:13:41,200 --> 00:13:44,530 все одно, що відбувається всередині чорний ящик, поки 303 00:13:44,530 --> 00:13:46,510 як це має висновок, який ми очікували. 304 00:13:46,510 --> 00:13:48,870 Це погано розроблені чорний ящик. 305 00:13:48,870 --> 00:13:53,801 Але врешті-решт, це робить ще вихід сума плюс б. 306 00:13:53,801 --> 00:13:54,300 Добре. 307 00:13:54,300 --> 00:13:56,320 Так ми оголосили функцій. 308 00:13:56,320 --> 00:13:57,490 І ми визначили функцію. 309 00:13:57,490 --> 00:13:58,540 Так що це дійсно добре. 310 00:13:58,540 --> 00:14:03,020 Тепер давайте почнемо використовувати функції що ми оголосили і ми визначили. 311 00:14:03,020 --> 00:14:05,960 Для виклику function-- це насправді досить easy-- все, що вам потрібно зробити, 312 00:14:05,960 --> 00:14:09,070 це передати його відповідними аргументами, Аргументи типу даних 313 00:14:09,070 --> 00:14:11,600 що він очікує, і потім призначити повернення 314 00:14:11,600 --> 00:14:15,190 Значення цієї функції і this-- виправдання me-- 315 00:14:15,190 --> 00:14:19,390 привласнити повертається значення цієї функції до чогось правильного типу. 316 00:14:19,390 --> 00:14:22,410 >> Отже, давайте подивимося на На практиці це у файлі 317 00:14:22,410 --> 00:14:27,730 називається суматор 1 точка С, У мене в CS50 IDE. 318 00:14:27,730 --> 00:14:31,042 Так от гадюка 1 точка гр. 319 00:14:31,042 --> 00:14:33,500 На початку ви бачите, я мій включає в себе, фунт включають, 320 00:14:33,500 --> 00:14:35,460 Стандарт І.О., і CS50 точка ч. 321 00:14:35,460 --> 00:14:37,700 А потім у мене оголошення функції. 322 00:14:37,700 --> 00:14:39,570 Це де я говорить компілятор Я 323 00:14:39,570 --> 00:14:42,850 буде написання Функція називається додати два цілих. 324 00:14:42,850 --> 00:14:45,780 Це відбувається для виведення ціла змінна типу. 325 00:14:45,780 --> 00:14:47,360 Це те, що ця частина прямо тут. 326 00:14:47,360 --> 00:14:51,950 А то у мене два входи до нього і б, кожен з яких представляє собою ціле число. 327 00:14:51,950 --> 00:14:58,250 Усередині головного, я прошу у користувача вхід кажучи, дай мені ціле. 328 00:14:58,250 --> 00:15:01,040 І вони запропоновано забути INT, яка є функцією, що 329 00:15:01,040 --> 00:15:03,240 включений в бібліотеці CS50. 330 00:15:03,240 --> 00:15:07,660 І, що зберігається в х, ціла змінна. 331 00:15:07,660 --> 00:15:09,886 >> Тоді ми підштовхнути їх ще цілого. 332 00:15:09,886 --> 00:15:13,070 Ми отримуємо ще ціле і зберігати, що в у. 333 00:15:13,070 --> 00:15:17,990 А потім, тут, на лінії 28, є де ми робимо нашу виклик функції. 334 00:15:17,990 --> 00:15:23,770 Ми говоримо, Int Z рівних додати 2 Інтс х коми у. 335 00:15:23,770 --> 00:15:25,980 Ви бачите, чому це має сенс? 336 00:15:25,980 --> 00:15:29,710 х є змінною цілого типу і у є змінною цілого типу. 337 00:15:29,710 --> 00:15:31,220 Так що це добре. 338 00:15:31,220 --> 00:15:34,570 Це має сенс з якою нашої функції Декларація про відповідність 17 виглядає. 339 00:15:34,570 --> 00:15:38,300 Список введення розділені комою очікує два цілих числа, а і б. 340 00:15:38,300 --> 00:15:40,300 У цьому випадку, ми можемо назвати їм, що ми хочемо. 341 00:15:40,300 --> 00:15:42,300 Це просто чекає два цілих числа. 342 00:15:42,300 --> 00:15:44,930 І х являє собою ціле число, і у є цілим числом. 343 00:15:44,930 --> 00:15:45,640 Це працює. 344 00:15:45,640 --> 00:15:48,680 >> І ми знаємо, що функція буде Для виведення числа, а також. 345 00:15:48,680 --> 00:15:51,290 І таким чином, ми зберігаємо вихід функції, 346 00:15:51,290 --> 00:15:56,050 додати два цілих, в ціле типу Змінна, яка ми називаємо р 347 00:15:56,050 --> 00:16:01,980 І тоді ми можемо говорити, що сума відсотків я і відсотків я це я відсотків. 348 00:16:01,980 --> 00:16:06,210 х, у і г відповідно заповнення в тих відсотків я років. 349 00:16:06,210 --> 00:16:08,334 Що є визначення додати два цілих виглядати? 350 00:16:08,334 --> 00:16:09,125 Це досить просто. 351 00:16:09,125 --> 00:16:11,270 Це один з тих, що ми щойно бачив секунду тому, 352 00:16:11,270 --> 00:16:14,390 INT сума дорівнює б зворотний плюс суму. 353 00:16:14,390 --> 00:16:15,420 Чи означає це працювати? 354 00:16:15,420 --> 00:16:17,270 Давайте зберегти файл. 355 00:16:17,270 --> 00:16:22,080 І тоді тут, на моєму терміналі Я збираюся зробити суматор 1, 356 00:16:22,080 --> 00:16:23,000 і я очистити екран. 357 00:16:23,000 --> 00:16:25,791 Я збираюся збільшити тому що я знаю це трохи важко побачити. 358 00:16:25,791 --> 00:16:31,520 359 00:16:31,520 --> 00:16:33,770 >> Так ми збираємо цю програму в якості суматора 1. 360 00:16:33,770 --> 00:16:37,910 Таким чином, ми можемо зробити точка слеш суматор 1. 361 00:16:37,910 --> 00:16:40,060 Дайте мені ціле, 10. 362 00:16:40,060 --> 00:16:42,380 Дайте мені ще ціле, 20. 363 00:16:42,380 --> 00:16:45,200 Сума 10 і 20 30. 364 00:16:45,200 --> 00:16:47,615 Таким чином, ми зробили виклик успішний функцію. 365 00:16:47,615 --> 00:16:55,820 Ви можете запустити функцію знову, негативний 10, 17 сума від'ємного 10 і 17 +7. 366 00:16:55,820 --> 00:16:57,120 Ця функція працює. 367 00:16:57,120 --> 00:16:59,240 Він має поведінка що ми очікуємо його. 368 00:16:59,240 --> 00:17:03,610 І таким чином, ми зробили успішний Функція, визначення, заява, 369 00:17:03,610 --> 00:17:07,288 і виклик успішним функція. 370 00:17:07,288 --> 00:17:09,079 Пара різний пункти про функції 371 00:17:09,079 --> 00:17:10,611 перш, ніж ми закінчимо цей розділ. 372 00:17:10,611 --> 00:17:12,319 Нагадаємо, з нашого обговорення типів даних, 373 00:17:12,319 --> 00:17:16,109 Раніше, що функції не може зайняти жоден вхід. 374 00:17:16,109 --> 00:17:17,930 Якщо це так, то ми оголосити функцію 375 00:17:17,930 --> 00:17:19,788 як має список аргументів недійсними. 376 00:17:19,788 --> 00:17:21,579 Пам'ятаєш вам, що Найбільш загальна функція 377 00:17:21,579 --> 00:17:25,036 ми бачили досі, що відбувається список аргументів порожнеча? 378 00:17:25,036 --> 00:17:27,300 Це головний. 379 00:17:27,300 --> 00:17:30,850 Нагадаємо також, що функція іноді насправді не мають вихід. 380 00:17:30,850 --> 00:17:34,210 У цьому випадку, ми оголошуємо функцію як мають тип повертається недійсним. 381 00:17:34,210 --> 00:17:37,880 Давайте закінчимо цей параграф вирішення проблеми практики. 382 00:17:37,880 --> 00:17:39,900 >> Так от проблема виклав. 383 00:17:39,900 --> 00:17:43,630 Я хочу, щоб ви написати функцію називається дійсним трикутник. 384 00:17:43,630 --> 00:17:47,410 Що ця функція повинна робити це взяти три реальні цифри 385 00:17:47,410 --> 00:17:51,930 які представляють довжини трьох сторони трикутника, як її параметрів, 386 00:17:51,930 --> 00:17:54,550 або його аргументи, або його inputs-- інший набір синонімів 387 00:17:54,550 --> 00:17:57,340 що ви можете зіткнутися. 388 00:17:57,340 --> 00:18:01,120 Ця функція повинна або вихід істинним чи хибним 389 00:18:01,120 --> 00:18:04,960 в залежності від того цих трьох довжин здатні зробити трикутник. 390 00:18:04,960 --> 00:18:09,930 Ви пам'ятаєте, що тип даних ми використовували, щоб вказати, вірно чи невірно? 391 00:18:09,930 --> 00:18:11,436 Тепер, як ви це реалізувати? 392 00:18:11,436 --> 00:18:13,810 Ну знаєте, є пара правил, що стосуються трикутників 393 00:18:13,810 --> 00:18:15,480 що насправді корисно знати. 394 00:18:15,480 --> 00:18:18,292 Трикутник може мати тільки Сторони з позитивною довжини. 395 00:18:18,292 --> 00:18:19,000 Що має сенс. 396 00:18:19,000 --> 00:18:21,432 Ви, мабуть, сказавши, хм. 397 00:18:21,432 --> 00:18:23,390 Інша річ, до відома хоча, є те, що сума 398 00:18:23,390 --> 00:18:25,484 довжин будь Сторони трикутника 399 00:18:25,484 --> 00:18:27,650 повинен бути більше, ніж Довжина третьої сторони. 400 00:18:27,650 --> 00:18:28,690 Це насправді так. 401 00:18:28,690 --> 00:18:34,150 Ви не можете мати трикутник сторін 1, 2 і 4, наприклад, через 1 плюс 2 402 00:18:34,150 --> 00:18:36,270 максимум, ніж 4. 403 00:18:36,270 --> 00:18:38,870 Так що ті правила, які визначити, чи дійсно трьох 404 00:18:38,870 --> 00:18:42,740 Входи можуть, імовірно, утворюють трикутник. 405 00:18:42,740 --> 00:18:46,360 Так що через пару хвилин і оголосити, а потім визначити 406 00:18:46,360 --> 00:18:49,810 ця функція називається дійсним трикутника, так, що він насправді 407 00:18:49,810 --> 00:18:51,650 має поведінка вказаний тут. 408 00:18:51,650 --> 00:18:57,030 >> Це буде справедливо, якщо вихід цих трьох сторін здатні містить трикутник, 409 00:18:57,030 --> 00:19:01,950 і брехня в іншому випадку Готові побачити, як ви зробили? 410 00:19:01,950 --> 00:19:04,650 Ось одна реалізація з дійсна трикутник. 411 00:19:04,650 --> 00:19:05,770 Це не тільки один. 412 00:19:05,770 --> 00:19:07,770 Ваш може незначно відрізнятися. 413 00:19:07,770 --> 00:19:11,040 Але це робить, насправді, є поведінку, яку ми очікуємо. 414 00:19:11,040 --> 00:19:14,450 Ми заявляємо, що наше функцію на дуже зверху, BOOL дійсний трикутник 415 00:19:14,450 --> 00:19:16,630 плавати х флоат у поплавця р 416 00:19:16,630 --> 00:19:18,930 Отже, ще раз, ця функція приймає три реальні цифри 417 00:19:18,930 --> 00:19:22,280 в якості аргументів, плаваючі точка значення змінних, 418 00:19:22,280 --> 00:19:26,510 і виводить істинним чи хибним значення, яке є логічним, нагадаємо. 419 00:19:26,510 --> 00:19:28,660 Так ось чому тип значення BOOL. 420 00:19:28,660 --> 00:19:30,016 Потім ми визначаємо функцію. 421 00:19:30,016 --> 00:19:33,140 Перше, що ми робимо, це перевірити, щоб переконатися, що всі сторони позитивні. 422 00:19:33,140 --> 00:19:37,010 Якщо х менше або дорівнює 0, або якщо у дорівнює 0, 423 00:19:37,010 --> 00:19:41,050 або якщо г менше або дорівнює 0, що не може бути трикутником. 424 00:19:41,050 --> 00:19:42,380 Вони не мають і позитивні сторони. 425 00:19:42,380 --> 00:19:45,790 І так ми можемо повернутися брехня в цій ситуації. 426 00:19:45,790 --> 00:19:49,010 Далі, ми перевіряємо, щоб переконатися, що кожна пара входів 427 00:19:49,010 --> 00:19:51,830 більше, ніж третій. 428 00:19:51,830 --> 00:19:54,530 >> Так що, якщо х плюс у менш або рівним г, 429 00:19:54,530 --> 00:19:57,060 або якщо х плюс г менше або рівним Y, 430 00:19:57,060 --> 00:20:01,730 або якщо у плюс г, менше або дорівнює х, що також не може бути допустимим трикутник. 431 00:20:01,730 --> 00:20:03,800 Таким чином, ми знову повернутися помилковим. 432 00:20:03,800 --> 00:20:06,900 Припустимо, що ми пройшли обидві перевірки хоча, то ми можемо повернутися правда. 433 00:20:06,900 --> 00:20:09,440 Тому що ті, з трьох сторін здатні returning-- 434 00:20:09,440 --> 00:20:11,647 створення дійсний трикутник. 435 00:20:11,647 --> 00:20:12,230 І це все. 436 00:20:12,230 --> 00:20:13,830 Тепер ви оголошені і визначені. 437 00:20:13,830 --> 00:20:17,330 І ви можете бути в змозі в даний час для використовувати і викликати цю функцію. 438 00:20:17,330 --> 00:20:19,470 Чудова робота. 439 00:20:19,470 --> 00:20:20,650 Я Дуг Ллойд. 440 00:20:20,650 --> 00:20:22,820 Це CS50. 441 00:20:22,820 --> 00:20:24,340