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 A черна кутия, която има набор от нула или повече входове и един изход. 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 И това отнема три входа А, В и С. 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 дава един изход, в този случай, Z. 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 добавя, че отнема три входа а, б, и в и обработва продукцията по някакъв начин 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 >> По същия начин, трябва да имате функция, наречена MULT, че се извършва по два входа, а и б, 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 Виждали сме печат е, например, които е функция, която ние не пиша 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 MULT А, В може да бъде 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 Ако имаме функция, наречена MULT, че се извършва по два входа. 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 Но също така може да бъде MULT осъществява по този начин, 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 Така че типът на връщане, че функция би било инт. 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 Ако дадете име на функция е или г или ч или мистерия или нещо подобно, 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 И така от типа връщане, тук, в зелено, ще бъде инт. 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 Float 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 това, което се случва вътре в черната кутия, която ние решихме да се обадя MULT две равни числа. 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 Така че аз декларирам променлива нарича сума от тип инт. 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 И това има смисъл, защото сума е променлива от тип инт. 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 инт сума се равнява на един плюс В- пропуснете, че Първият 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 Ако сте приели този код, което е инт добави лоша усойница точка с, и да го използвате. 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 стандартна IO и 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 И те са подканени да забравите инт, което е функция, която 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 добавете две цели числа, в цяло число тип променлива, която се обаждате Z. 347 00:15:56,050 --> 00:16:01,980 И тогава можем да кажем, сумата от процента аз и сто процента е аз мога. 348 00:16:01,980 --> 00:16:06,210 X, Y и Z, съответно попълване на тези процента аз му. 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 инт сума се равнява на един плюс б връщане сума. 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 A триъгълник може да има само страни с положителен дължина. 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 Yours може леко да варира. 413 00:19:07,770 --> 00:19:11,040 Но този човек прави, всъщност, има поведението, което очакваме. 414 00:19:11,040 --> 00:19:14,450 Ние заявяваме нашата функция в самия връх, булев валидна триъгълник 415 00:19:14,450 --> 00:19:16,630 плувка плувка х у плувка Z. 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 Значи затова типа връщане е булев. 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 Ако X е по-малко от или равно 0, или ако Y е равно на 0, 423 00:19:37,010 --> 00:19:41,050 или Z е по-малко от или равно на 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 >> Така че, ако х плюс у е по-малко от или равно на Z, 429 00:19:54,530 --> 00:19:57,060 или ако х плюс Z е по-малко от или равна на у, 430 00:19:57,060 --> 00:20:01,730 или ако Y плюс Z е по-малко от или равно на х, който също не може да бъде валиден триъгълник. 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