[Powered by Google Translate] Функцыі з'яўляюцца ўчасткі кода, якія выкарыстоўваюцца ў больш шырокай праграмы для выканання пэўнай задачы. Яны таксама вядомыя як працэдуры, падпраграмы і падпраграмы, так як яны на самой справе проста міні-праграм у рамках праграмы. Нават калі вы не заўважылі, Вы зусім вызначана выкарыстаў функцыі ўжо калі вы праграмавалі на мове C. Калі вы пішаце матэрыял на экран з дапамогай Printf, вы на самой справе з дапамогай функцыі называюцца Printf. Акрамя таго, GetInt і GetString функцыі, якія CS50 падае для вас. Як праграмісты, мы выкарыстоўваем функцыі для цэлага шэрагу прычын. Наяўнасць функцыі для выканання агульных задач, такіх як напісанне на экране і прапаноўваючы карыстачу для ўводу эканоміць нам час пры праграмаванні. Гэта не трэба пісаць код, каб зрабіць тыя ж самыя рэчы так як яны ўжо зрабілі для нас. Гэта нават не нам неабходна зразумець, як менавіта гэтыя функцыі працуюць унутры краіны. Замест гэтага, мы проста павінны ведаць, як выкарыстоўваць ці называем іх у нашых праграмах. Гэта таксама карысна, каб напісаць функцыі ў вялікіх праграмах Нават калі вы не плануеце мець іншыя выкарыстоўваюць іх, проста дзяліць вялікія задачы. Такім чынам, вы даяце структуры ў кодзе гэтак жа, як вы маглі б даць структуру эсэ, і з вельмі буйнымі праектамі вы уключыце некалькі чалавек працаваць над рознымі часткамі ў той жа час так як ясна, дзе праца аднаго чалавека заканчваецца, а другі пачынаецца. Функцыі як правіла, працуюць на 1 або больш уваходаў, вядомы як аргументы або параметры, пераўтварэння гэтых укладаў у выходную значэнне, якое затым вяртаецца. Аднак, гэта таксама магчыма мець функцыі, якія не выкарыстоўваюць ніякіх ўваходных аргументаў і не вяртаюцца выхад. Добра, хопіць з пухнатыя рэчы. Давайце паглядзім на некаторыя рэальныя функцыі ў C. Тут у нас ёсць функцыя завецца квадратнай, што, верыце ці не, вылічае квадрат ўваход. Давайце прааналізуем сінтаксіс яго. Першае слова, якое вы бачыце на функцыю, INT, вызначае тып якое вяртаецца значэння функцыі, гэта значыць, тыпу C выхадны функцыі. Гэтая функцыя будзе выводзіць значэнне з тыпам Int. Наступнае слова, якое вы бачыце, з'яўляецца імя функцыі, квадратнага ў гэтым выпадку. Найменне функцыі належным асабліва важна так як гэта, верагодна, найбольш прыкметным дакументацыі, што функцыя робіць. Гэта можа быць халаднавата, каб назваць гэтую функцыю Shazam або Booyah, але гэта не кажа нам нічога пра тое, што функцыя робіць. Пасля імя функцыі прыходзяць ўваходу ў функцыю, аргументамі. Яны пералічаны ў круглых дужках як з іх тып і імя для выкарыстання іх у целе функцыі. Плошча займае ўсяго 1 аргумент, унутр да плошчы, які я вырашыў даць назву х. На гэтым сканчаецца аб'явай функцыі прататыпа. Фігурныя дужкі астатнія функцыі абазначаюць пачатак і канец цела функцыі, вызначэнне самой функцыі. Плошча даволі простая функцыя. Ён атрымаў толькі 1 лінію, так як усе, што мы павінны зрабіць, гэта памножыць х сама па сабе. Слова вяртання вызначае выходную значэнне і трыгеры канцы функцыі. Каб выкарыстоўваць квадратныя функцыі, мы павінны даць адпаведныя ўваходы , А затым захапіць выхад. Тут вы бачыце некалькі спосабаў зрабіць гэта. Мы можам перадаць у сырам Int, як і 6, ці мы можам перадаць у зменную як. Звярніце ўвагу, што кожны раз, калі мы называем плошчы, мы фіксуем вынік у зменную, а затым раздрукаваць яго. Тым не менш, у нас няма для захоўвання вяртаецца значэння ў зменнай, а затым раздрукаваць. Мы маглі б проста адправіць яго прама на Printf, як мы робім, калі мы квадрат 10, але гэта не азначае, што мы не маем доступу да вяртае значэнне квадрат 10 у іншых месцах у кодзе. Давайце паглядзім на яшчэ адзін просты прыклад. На гэты раз мы будзем падводзіць 2 паплаўка разам, так што мы можам бачыць, што функцыя выглядае калі ён атрымаў 2 ўваходу, а не толькі 1. Як вы можаце бачыць, гэта не моцна адрозніваецца. Усё, што нам зрабіць, гэта дадаць у 2-й аргумент, паплавок імя б, ў спісе аргументаў праз коску, каб аддзяліць яго ад першага аргументу, плаваць. Такім чынам, нашы плошчы і сумай функцыі даволі лёгка зразумець таму што яны эквівалентныя функцыі, якія вы бачылі да гэтага ў матэматычным класе. Цяпер, давайце паглядзім на функцыю, якая трохі адрозніваецца. Замест вяртання значэння, яна змяняе стан. Гэта вядома як мае пабочных эфектаў. У гэтай праграме функцыя printf_fudd_style мае вяртаецца тып, што мы раней не бачылі, несапраўднымі. Пустэча выкарыстоўваюцца для кажам, што функцыя не вяртае нічога. Ёсць ніякіх зменных тыпу пустата, так што калі вы паспрабуеце вярнуць нешта з функцыі, як printf_fudd_style, кампілятар будзе крычаць на вас. Усярэдзіне printf_fudd_style, мы бачым, што ў той час як функцыі да гэтага часу выконвае задачы, а менавіта, пераход усіх грн для Ws, кропка функцыі заключаецца ў змене радкі, а затым раздрукаваць яго на экране, змяненнем стану праграмы замест вяртання выніку. З дапамогай гэтай функцыі вельмі падобны выкарыстоўваючы нашы плошчы і сумы функцый, акрамя мы не захаваць вынік у зменнай або перадаць яго на іншую функцыю так як няма выніку казаць. Таму, калі мы скампіляваць і запусціць наш Elmer Fudd праграмы, Вы бачыце, што "Ты махляр труса!" пераўтворыцца права "Вы wascally Wabbit!" Нарэшце, ёсць яшчэ 1 функцыя варта абмяркоўваць так як вы выкарыстоўваеце гэта ў кожнай праграме C вы калі-небудзь напісаных, асноўны. Галоўная функцыя гэтак жа, як любы іншы. Гэта ёсць вяртанне тып, імя, спіс аргументаў, і цела. Тып якое вяртаецца значэння асноўных заўсёды INT, і гэта Int выкарыстоўваецца для перадачы стану праграмы, калі ён скончыцца. Хіба гэта паспяхова працаваць, ці ж гэта скончыцца рана з-за памылкі? Вяртаючыся да нуля паказвае на паспяховае перспектыве, і вяртанне любое ненулявое значэнне паказвае на памылку. У залежнасці ад таго, якую праграму вы пішаце, вяртанне розныя коды для розных памылак можа быць карысным для людзей, якія выкарыстоўваюць вашу праграму пазней. Сетка аргументы крыху больш складана. Спіс аргументаў можа быць альбо пусты, якія мы паказваем ў пісьмовым выглядзе пустэчы ў круглых дужках, ці спісу можа мець 2 аргументу: Int і масіў сімвалаў S *. Яны выкарыстоўваюцца, калі ваша праграма мае намер выкарыстоўваць Аргументы, якія перадаюцца ў камандным радку, калі праграма выклікаецца. Int аргумент звычайна называюць агдс, і гэта роўны даўжыні масіў сімвалаў *, вядомы як ARGV. Argv ўтрымлівае аргументы каманднага радка перадаюцца ў праграму. У іншым Карацей кажучы, мы пагаворым аб тым, як выкарыстоўваць гэтыя зменныя больш падрабязна. На дадзены момант, вы можаце смела заявіць асноўнай у любым выпадку. Я звычайна выбіраюць, каб напісаць гэта кароткі шлях, без аргументаў, калі гэта магчыма. Зараз, калі вы ведаеце, як пісаць функцыі, Вы знаходзіцеся добра на Вашым шляху да распрацоўцы больш буйных і складаных праграм. Мяне клічуць Нейт Хардисон. Гэта CS50.