1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Функцыі з'яўляюцца ўчасткі кода, якія выкарыстоўваюцца ў больш шырокай праграмы 2 00:00:09,640 --> 00:00:11,430 для выканання пэўнай задачы. 3 00:00:11,430 --> 00:00:15,060 Яны таксама вядомыя як працэдуры, падпраграмы і падпраграмы, 4 00:00:15,060 --> 00:00:18,320 так як яны на самой справе проста міні-праграм у рамках праграмы. 5 00:00:18,320 --> 00:00:20,340 Нават калі вы не заўважылі, 6 00:00:20,340 --> 00:00:24,090 Вы зусім вызначана выкарыстаў функцыі ўжо калі вы праграмавалі на мове C. 7 00:00:24,090 --> 00:00:26,770 Калі вы пішаце матэрыял на экран з дапамогай Printf, 8 00:00:26,770 --> 00:00:29,380 вы на самой справе з дапамогай функцыі называюцца Printf. 9 00:00:29,380 --> 00:00:33,760 Акрамя таго, GetInt і GetString функцыі, якія CS50 падае для вас. 10 00:00:33,760 --> 00:00:37,750 Як праграмісты, мы выкарыстоўваем функцыі для цэлага шэрагу прычын. 11 00:00:37,750 --> 00:00:41,240 >> Наяўнасць функцыі для выканання агульных задач, такіх як напісанне на экране 12 00:00:41,240 --> 00:00:44,480 і прапаноўваючы карыстачу для ўводу эканоміць нам час пры праграмаванні. 13 00:00:44,480 --> 00:00:47,510 Гэта не трэба пісаць код, каб зрабіць тыя ж самыя рэчы 14 00:00:47,510 --> 00:00:49,520 так як яны ўжо зрабілі для нас. 15 00:00:49,520 --> 00:00:54,580 Гэта нават не нам неабходна зразумець, як менавіта гэтыя функцыі працуюць унутры краіны. 16 00:00:54,580 --> 00:00:58,880 Замест гэтага, мы проста павінны ведаць, як выкарыстоўваць ці называем іх у нашых праграмах. 17 00:00:58,880 --> 00:01:02,040 Гэта таксама карысна, каб напісаць функцыі ў вялікіх праграмах 18 00:01:02,040 --> 00:01:04,330 Нават калі вы не плануеце мець іншыя выкарыстоўваюць іх, 19 00:01:04,330 --> 00:01:06,830 проста дзяліць вялікія задачы. 20 00:01:06,830 --> 00:01:11,910 Такім чынам, вы даяце структуры ў кодзе гэтак жа, як вы маглі б даць структуру эсэ, 21 00:01:11,910 --> 00:01:15,180 і з вельмі буйнымі праектамі вы уключыце некалькі чалавек 22 00:01:15,180 --> 00:01:16,730 працаваць над рознымі часткамі ў той жа час 23 00:01:16,730 --> 00:01:20,480 так як ясна, дзе праца аднаго чалавека заканчваецца, а другі пачынаецца. 24 00:01:20,480 --> 00:01:26,530 >> Функцыі як правіла, працуюць на 1 або больш уваходаў, вядомы як аргументы або параметры, 25 00:01:26,530 --> 00:01:30,520 пераўтварэння гэтых укладаў у выходную значэнне, якое затым вяртаецца. 26 00:01:30,520 --> 00:01:34,950 Аднак, гэта таксама магчыма мець функцыі, якія не выкарыстоўваюць ніякіх ўваходных аргументаў 27 00:01:34,950 --> 00:01:36,400 і не вяртаюцца выхад. 28 00:01:36,400 --> 00:01:38,790 Добра, хопіць з пухнатыя рэчы. 29 00:01:38,790 --> 00:01:41,790 Давайце паглядзім на некаторыя рэальныя функцыі ў C. 30 00:01:41,790 --> 00:01:45,570 >> Тут у нас ёсць функцыя завецца квадратнай, што, верыце ці не, 31 00:01:45,570 --> 00:01:47,570 вылічае квадрат ўваход. 32 00:01:47,570 --> 00:01:49,490 Давайце прааналізуем сінтаксіс яго. 33 00:01:49,490 --> 00:01:51,860 Першае слова, якое вы бачыце на функцыю, INT, 34 00:01:51,860 --> 00:01:57,460 вызначае тып якое вяртаецца значэння функцыі, гэта значыць, тыпу C выхадны функцыі. 35 00:01:57,460 --> 00:02:00,370 Гэтая функцыя будзе выводзіць значэнне з тыпам Int. 36 00:02:00,370 --> 00:02:04,100 Наступнае слова, якое вы бачыце, з'яўляецца імя функцыі, квадратнага ў гэтым выпадку. 37 00:02:04,100 --> 00:02:07,390 Найменне функцыі належным асабліва важна 38 00:02:07,390 --> 00:02:11,260 так як гэта, верагодна, найбольш прыкметным дакументацыі, што функцыя робіць. 39 00:02:11,260 --> 00:02:14,880 Гэта можа быць халаднавата, каб назваць гэтую функцыю Shazam або Booyah, 40 00:02:14,880 --> 00:02:18,340 але гэта не кажа нам нічога пра тое, што функцыя робіць. 41 00:02:18,340 --> 00:02:23,470 >> Пасля імя функцыі прыходзяць ўваходу ў функцыю, аргументамі. 42 00:02:23,470 --> 00:02:26,380 Яны пералічаны ў круглых дужках 43 00:02:26,380 --> 00:02:30,160 як з іх тып і імя для выкарыстання іх у целе функцыі. 44 00:02:30,160 --> 00:02:34,030 Плошча займае ўсяго 1 аргумент, унутр да плошчы, 45 00:02:34,030 --> 00:02:36,160 які я вырашыў даць назву х. 46 00:02:36,160 --> 00:02:40,760 На гэтым сканчаецца аб'явай функцыі прататыпа. 47 00:02:40,760 --> 00:02:43,320 Фігурныя дужкі астатнія функцыі 48 00:02:43,320 --> 00:02:45,870 абазначаюць пачатак і канец цела функцыі, 49 00:02:45,870 --> 00:02:48,320 вызначэнне самой функцыі. 50 00:02:48,320 --> 00:02:50,300 Плошча даволі простая функцыя. 51 00:02:50,300 --> 00:02:54,100 Ён атрымаў толькі 1 лінію, так як усе, што мы павінны зрабіць, гэта памножыць х сама па сабе. 52 00:02:54,100 --> 00:02:59,250 Слова вяртання вызначае выходную значэнне і трыгеры канцы функцыі. 53 00:02:59,250 --> 00:03:03,430 Каб выкарыстоўваць квадратныя функцыі, мы павінны даць адпаведныя ўваходы 54 00:03:03,430 --> 00:03:05,310 , А затым захапіць выхад. 55 00:03:05,310 --> 00:03:08,140 Тут вы бачыце некалькі спосабаў зрабіць гэта. 56 00:03:08,140 --> 00:03:13,600 Мы можам перадаць у сырам Int, як і 6, ці мы можам перадаць у зменную як. 57 00:03:13,600 --> 00:03:15,700 Звярніце ўвагу, што кожны раз, калі мы называем плошчы, 58 00:03:15,700 --> 00:03:18,330 мы фіксуем вынік у зменную, а затым раздрукаваць яго. 59 00:03:18,330 --> 00:03:22,690 Тым не менш, у нас няма для захоўвання вяртаецца значэння ў зменнай, а затым раздрукаваць. 60 00:03:22,690 --> 00:03:27,090 Мы маглі б проста адправіць яго прама на Printf, як мы робім, калі мы квадрат 10, 61 00:03:27,090 --> 00:03:30,580 але гэта не азначае, што мы не маем доступу да вяртае значэнне квадрат 10 62 00:03:30,580 --> 00:03:32,230 у іншых месцах у кодзе. 63 00:03:32,230 --> 00:03:34,890 Давайце паглядзім на яшчэ адзін просты прыклад. 64 00:03:34,890 --> 00:03:38,750 >> На гэты раз мы будзем падводзіць 2 паплаўка разам, так што мы можам бачыць, што функцыя выглядае 65 00:03:38,750 --> 00:03:41,220 калі ён атрымаў 2 ўваходу, а не толькі 1. 66 00:03:41,220 --> 00:03:43,950 Як вы можаце бачыць, гэта не моцна адрозніваецца. 67 00:03:43,950 --> 00:03:47,330 Усё, што нам зрабіць, гэта дадаць у 2-й аргумент, паплавок імя б, 68 00:03:47,330 --> 00:03:51,820 ў спісе аргументаў праз коску, каб аддзяліць яго ад першага аргументу, плаваць. 69 00:03:51,820 --> 00:03:55,550 Такім чынам, нашы плошчы і сумай функцыі даволі лёгка зразумець 70 00:03:55,550 --> 00:03:58,930 таму што яны эквівалентныя функцыі, якія вы бачылі да гэтага ў матэматычным класе. 71 00:03:58,930 --> 00:04:01,610 Цяпер, давайце паглядзім на функцыю, якая трохі адрозніваецца. 72 00:04:01,610 --> 00:04:04,620 Замест вяртання значэння, яна змяняе стан. 73 00:04:04,620 --> 00:04:07,260 Гэта вядома як мае пабочных эфектаў. 74 00:04:07,260 --> 00:04:10,750 У гэтай праграме функцыя printf_fudd_style 75 00:04:10,750 --> 00:04:13,410 мае вяртаецца тып, што мы раней не бачылі, несапраўднымі. 76 00:04:13,410 --> 00:04:16,730 >> Пустэча выкарыстоўваюцца для кажам, што функцыя не вяртае нічога. 77 00:04:16,730 --> 00:04:19,410 Ёсць ніякіх зменных тыпу пустата, 78 00:04:19,410 --> 00:04:22,760 так што калі вы паспрабуеце вярнуць нешта з функцыі, як printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 кампілятар будзе крычаць на вас. 80 00:04:24,290 --> 00:04:29,390 Усярэдзіне printf_fudd_style, мы бачым, што ў той час як функцыі да гэтага часу выконвае задачы, 81 00:04:29,390 --> 00:04:31,890 а менавіта, пераход усіх грн для Ws, 82 00:04:31,890 --> 00:04:36,380 кропка функцыі заключаецца ў змене радкі, а затым раздрукаваць яго на экране, 83 00:04:36,380 --> 00:04:39,400 змяненнем стану праграмы замест вяртання выніку. 84 00:04:39,400 --> 00:04:43,700 З дапамогай гэтай функцыі вельмі падобны выкарыстоўваючы нашы плошчы і сумы функцый, 85 00:04:43,700 --> 00:04:46,950 акрамя мы не захаваць вынік у зменнай або перадаць яго на іншую функцыю 86 00:04:46,950 --> 00:04:49,520 так як няма выніку казаць. 87 00:04:49,520 --> 00:04:53,180 Таму, калі мы скампіляваць і запусціць наш Elmer Fudd праграмы, 88 00:04:53,180 --> 00:04:56,970 Вы бачыце, што "Ты махляр труса!" пераўтворыцца права 89 00:04:56,970 --> 00:04:58,730 "Вы wascally Wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Нарэшце, ёсць яшчэ 1 функцыя варта абмяркоўваць 91 00:05:02,250 --> 00:05:06,810 так як вы выкарыстоўваеце гэта ў кожнай праграме C вы калі-небудзь напісаных, асноўны. 92 00:05:06,810 --> 00:05:09,450 Галоўная функцыя гэтак жа, як любы іншы. 93 00:05:09,450 --> 00:05:13,580 Гэта ёсць вяртанне тып, імя, спіс аргументаў, і цела. 94 00:05:13,580 --> 00:05:16,110 Тып якое вяртаецца значэння асноўных заўсёды INT, 95 00:05:16,110 --> 00:05:19,120 і гэта Int выкарыстоўваецца для перадачы стану праграмы, калі ён скончыцца. 96 00:05:19,120 --> 00:05:23,360 >> Хіба гэта паспяхова працаваць, ці ж гэта скончыцца рана з-за памылкі? 97 00:05:23,360 --> 00:05:26,390 Вяртаючыся да нуля паказвае на паспяховае перспектыве, 98 00:05:26,390 --> 00:05:29,510 і вяртанне любое ненулявое значэнне паказвае на памылку. 99 00:05:29,510 --> 00:05:31,950 У залежнасці ад таго, якую праграму вы пішаце, 100 00:05:31,950 --> 00:05:34,960 вяртанне розныя коды для розных памылак можа быць карысным 101 00:05:34,960 --> 00:05:37,210 для людзей, якія выкарыстоўваюць вашу праграму пазней. 102 00:05:37,210 --> 00:05:40,220 Сетка аргументы крыху больш складана. 103 00:05:40,220 --> 00:05:42,150 >> Спіс аргументаў можа быць альбо пусты, 104 00:05:42,150 --> 00:05:45,330 якія мы паказваем ў пісьмовым выглядзе пустэчы ў круглых дужках, 105 00:05:45,330 --> 00:05:50,220 ці спісу можа мець 2 аргументу: Int і масіў сімвалаў S *. 106 00:05:50,220 --> 00:05:52,820 Яны выкарыстоўваюцца, калі ваша праграма мае намер выкарыстоўваць 107 00:05:52,820 --> 00:05:56,490 Аргументы, якія перадаюцца ў камандным радку, калі праграма выклікаецца. 108 00:05:56,490 --> 00:05:59,690 Int аргумент звычайна называюць агдс, 109 00:05:59,690 --> 00:06:03,300 і гэта роўны даўжыні масіў сімвалаў *, вядомы як ARGV. 110 00:06:03,300 --> 00:06:07,080 Argv ўтрымлівае аргументы каманднага радка перадаюцца ў праграму. 111 00:06:07,080 --> 00:06:11,440 У іншым Карацей кажучы, мы пагаворым аб тым, як выкарыстоўваць гэтыя зменныя больш падрабязна. 112 00:06:11,440 --> 00:06:15,220 На дадзены момант, вы можаце смела заявіць асноўнай у любым выпадку. 113 00:06:15,220 --> 00:06:19,410 Я звычайна выбіраюць, каб напісаць гэта кароткі шлях, без аргументаў, калі гэта магчыма. 114 00:06:19,410 --> 00:06:22,230 >> Зараз, калі вы ведаеце, як пісаць функцыі, 115 00:06:22,230 --> 00:06:25,030 Вы знаходзіцеся добра на Вашым шляху да распрацоўцы больш буйных і складаных праграм. 116 00:06:25,030 --> 00:06:29,740 Мяне клічуць Нейт Хардисон. Гэта CS50.