1 00:00:00,000 --> 00:00:04,664 2 00:00:04,664 --> 00:00:05,580 Даг Ллоид: У реду. 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 >> Срећом, иако Ц, и прилично сваки други програмски језик који 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 пре-- и не брини Ако нисте, не 28 00:01:11,950 --> 00:01:14,280 велики деал-- али у ревизије оријентисани језици 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 И што је потребно три улаза А, Б, и Ц. 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 додају да узима три улаза А, Б, и ц и обрађује излаз на неки начин 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 се доносе у мулт, нешто деси, излаз очекујемо 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 урадили смо доста до сада ЦС50. 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 >> Тако, на пример, кутија и Црна само вам показао за умножавање, 64 00:02:51,710 --> 00:02:53,740 мулт а, б може бити дефинед-- а ово је само 65 00:02:53,740 --> 00:02:57,902 неки псеудоцоде-- може бити дефинисан као излаз Тајмс б. 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 имамо контра променљиву се сет унутар мулт до 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 функција или функција 1,000 линија. 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 Флоат мулт два реалс флоат к, флоат и. 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 Али стварно могли назвати мулт два сплавова, или мулт плута. 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 У овде у наранџастом имам Управо сам имао неке цомментс-- 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 Инт. 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 Инт сума једнака плус б-- прескочити Први степ-- а онда се врати износ. 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 Да бисте позвали фунцтион-- То је уствари прилично лако, све што треба да урадите 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 Вредност те функције и ово-- изговор мене-- 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 тачка Ц, који Имам у ЦС50 ИДЕ. 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 Стандардни ИО, и ЦС50 тачка х. 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 је укључен у ЦС50 библиотеци. 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 Ми кажемо, инт з једнаки додати 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 инт сум једнако ПЛУС Б повратка суму. 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 или његови аргументи, или њени инпутс-- други сет синонима 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 Ми објављујемо нашу функцију на самом врху, БооЛ важећи троугао 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 Зато је повратни тип инт. 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 или ако је к плус З је мање од или једнако и, 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 Због те три стране су способни за ретурнинг-- 434 00:20:09,440 --> 00:20:11,647 стварања важећу троугао. 435 00:20:11,647 --> 00:20:12,230 I to je to. 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 Ово је ЦС50. 441 00:20:22,820 --> 00:20:24,340