Neveltui šį straipsnį pavadinau „Funkcijos kaip neatsiejama programavimo dalis“, nes be jų, mano nuomone, jokia kalba neturi teisės egzistuoti. Kas tai? Funkcija yra pagrindinė gerai parašytos programos sudedamoji dalis. Tai ne tik palengvina kodo skaitymą, bet ir radikaliai pakeičia jo idėją struktūrinis programavimas. Funkcijų pagalba galite pakartotinai panaudoti atskiras programos dalis, perduodant joms bet kokius parametrus. Jokia rimta programa neįsivaizduojama be šio programavimo elemento stebuklo.
Trumpai papasakosiu kaip tai veikia. Funkcija yra instrukcijų, kurias gali iškviesti jūsų programa, blokas. Pasiekus šio bloko antraštę (funkcijos pavadinimą), jis vykdomas ir atlieka kai kuriuos programuotojo nurodytus veiksmus. Po to šis blokas grąžina gautą reikšmę ir perduoda ją pagrindinei programai. Leiskite man paaiškinti praktiškai.
Grubiai tariant, viskas atrodo taip. Trumpai paaiškinsiu. Mes sukuriame tam tikrą kintamąjį ir priskiriame jam funkcijos myfunc vykdymo rezultatą, kuris savo ruožtu apskaičiuoja tam tikro skaičiaus kvadratūros reikšmę. Funkcijos vykdomos ne iš karto programos paleidimo metu, o tik tada, kai jos iškviečiamos. Gal kiek glumina, bet taip yra.
Kaip iškviesti funkciją?
Norėdami iškviesti funkciją, turite ją sukurti. Nors yra ir įmontuotų funkcijų. Pavyzdžiui, tai: cos, sin, md5, skaičius, abs ir taip toliau. Norėdami juos iškviesti, tereikia kintamajam priskirti norimą reikšmę.
Funkcijos argumentas yra reikšmė, kurią jam perduodate, kai ją iškviečiate. Funkcijos argumentai dedami skliausteliuose. Kai kuriate funkciją, nurodote sąlyginius argumentų pavadinimus. Tada šie pavadinimai gali būti naudojami funkcijos turinyje kaip vietiniai kintamieji. Grįžkime prie funkcijų, kurias vartotojas susikuria pats. Tai daroma labai lengvai. Pirmiausia sukuriamas funkcijos turinys:
Funkcija hello() ( aidas "Sveikas, pasauli!"; )
Tada mes tai vadiname. Ir jei jis neturi parametrų, mes tiesiog dedame skliaustus. Norėdami iškviesti šią funkciją, naudojame tik eilutę: Sveiki();. Bet kuri funkcija taip pat gali grąžinti reikšmę naudojant rezervuotas žodis grąžinti. Šis sakinys nutraukia funkcijos vykdymą ir siunčia grąžinamąją reikšmę kviečiančiai programai. function sum($first, $second) ($r=$first + $second; return $r;) echo sum(2,5); programos vykdymo rezultatas bus lygus 7. Vietiniai ir globalūs kintamieji
Kaip ir bet kurioje kitoje programavimo kalboje, yra kintamųjų, kurie pasiekiami tik funkcijos viduje, ir kintamųjų, kurie yra pačios programos kode. Tokie kintamieji atitinkamai vadinami vietiniais ir globaliais. Funkcijoje negalite pasiekti tik kintamojo, kuris buvo sukurtas už šios funkcijos ribų. Jei bandysite tai padaryti, sukursite naują kintamąjį tuo pačiu pavadinimu, bet vietos funkcijai.
$per="Dima"; function primer() // Do: local kintamojo išvestis ( echo "Mano vardas yra ".$per; ) echo primer();
Tokiu atveju ekrane pasirodys frazė „Mano vardas yra“. Tai reiškia, kad pradmenų funkcijos viduje buvo sukurtas $ per kintamasis ir pagal numatytuosius nustatymus jis buvo priskirtas nulinė vertė. Norint išvengti tokių kliūčių, reikia naudoti operatorių globalus. Atitinkamai pataisykime aukščiau pateiktą kodą:
$per="Dima"; function primer() // Atlieka: globali kintamojo išvestis ( global $per; echo "Mano vardas yra ".$per; ) echo primer();
Dabar viskas turėtų būti gerai – problema išspręsta. Tik nepamirškite, kad jei funkcija pakeis išorinio kintamojo reikšmę, toks pakeitimas paveiks visą programą, todėl šį operatorių reikia naudoti atsargiai!
Funkcijos su dviem ar daugiau argumentų
Kai kurie funkcijai perduodami argumentai gali būti pasirenkami, todėl funkcija tampa mažiau reikli. Toliau pateiktas pavyzdys tai aiškiai parodo:
... function šriftas($text, $size=5) // Do: išvesties šrifto dydis ( echo " „.$tekstas“."; ) šriftas ("Sveiki
",1); šriftas ("Sveiki
",2); šriftas ("Sveiki
",3); šriftas ("Sveiki
",4); šriftas ("Sveiki
",5); šriftas ("Sveiki
",6); šriftas ("Sveiki
");
Pagal numatytuosius nustatymus šrifto dydis yra 5. Jei praleisime antrą funkcijos parametrą, jis bus lygus šiai reikšmei.
Išvada
Prieš atsisveikindamas noriu atkreipti jūsų dėmesį į vieną patarimą. Tai susideda iš visų jūsų parašytų funkcijų sudėjimo į vieną failą (pavyzdžiui, function.php). Ir tada į failą, kuriame reikia iškviesti funkciją, tereikia įtraukti function.php ir viskas bus paruošta naudojimui. Taip bus daug lengviau suprasti jūsų programos logiką. Norėdami prisijungti, naudokite:
include_once("funkcija.php");
request_once("funkcija.php");
Jei suprantate šiame straipsnyje nagrinėjamo klausimo esmę, esu tikras, kad galėsite lengvai naudotis savo programų funkcijomis. Dar kartą tai daroma tam, kad juos būtų galima redaguoti ir pakartotinai naudoti.
Funkcijos virš skaičių. VB kalba turi šias matematines funkcijas: abs(x) - modulių skaičiavimas; kv(x) - kvadratinės šaknies apskaičiavimas, atn(x) - lanko liestinės skaičiavimas; cos(x) - kosinuso skaičiavimas; nuodėmė(x) - sinuso skaičiavimas; įdegis(x) - liestinės skaičiavimas; žurnalas(x) - natūraliojo logaritmo skaičiavimas, exp(x) - eksponento apskaičiavimas, kur x- skaitinio tipo funkcijos argumentas. Norint apskaičiuoti funkcijų, kurių nėra VisualBasic kalboje, reikšmes, reikia naudoti iš matematikos žinomas formules.
Išraiška y= VB būtų parašytas taip: y=sin(x^2)+sqr(tan(x))*(x+5) ^ (1/5).
Funkcijos argumentas turi būti parašytas skliausteliuose.
Funkcijos konvertuoti reikšmę iš vieno tipo į kitą. VB programavimo kalba suteikia funkcijas, skirtas keisti reikšmės duomenų tipą. Pavyzdžiui, yra kintamasis a tipo Double ir kintamasis s tipo String.
Norint įrašyti kintamąjį a į kintamąjį s, reikia atlikti tipo konvertavimą S=CStr(a), o kintamąjį s įrašyti į kintamąjį a–a=CDbl(s).
VB funkcijos vertės tipo konvertavimui:
CStr – konvertuoti į eilutę;
CByte – konvertavimas į baitą;
CInt – konvertavimas į sveikąjį skaičių;
CLng – konvertavimas į Long;
CSng – konvertavimas į vienvietį;
CDbl - konvertuoti į dvigubą.
2.6. Įvairių tipų duomenų atvaizdavimas kompiuterio atmintyje
Informacijos atvaizdavimui kompiuterio atmintyje (tiek skaitinei, tiek neskaitinei) naudojamas dvejetainis kodavimo metodas.
Elementarios kompiuterio atminties ląstelės ilgis yra 8 bitai (baitai). Kiekvienas baitas turi savo numerį (jis vadinamas adresu). Vadinama didžiausia bitų seka, kurią kompiuteris gali apdoroti kaip visumą mašininis žodis. Mašininio žodžio ilgis priklauso nuo procesoriaus žodžio ilgio ir gali būti 16, 32, 64 bitai ir kt.
Simbolių kodavimas. Simboliams užkoduoti pakanka vieno baito. Šiuo atveju gali būti pavaizduoti 256 simboliai (su dešimtainiai kodai nuo 0 iki 255). Asmeninių kompiuterių, suderinamų su IBM asmeniniu kompiuteriu, simbolių rinkinys dažniausiai yra ASCII kodo (American Standard Code for Information Interchange – standartinis amerikietiškas informacijos mainų kodas) plėtinys. Šiuo metu taip pat naudojami dviejų baitų simbolių atvaizdai.
Sveikųjų skaičių vaizdavimas dviejų komplemente. Vertybių diapazonas priklauso nuo jų saugojimui skirtų atminties bitų skaičiaus. n bitų atmintis gali saugoti Pvz., Integer tipo reikšmės yra diapazone nuo -32768 (-2 15) iki 32767 (2 15 - 1), o jų saugojimui yra skirti 2 baitai (16 bitų); tipo Long - diapazone nuo -2 31 iki 2 31 - 1 ir yra 4 baituose (32 bitai).
Jei sveikieji dvejetainiai skaičiai pateikiami be ženklo, skiriasi nuo 0 iki
, o pasirašytame atstove – nuo
prieš
. Šiuolaikiniuose kompiuteriuose sveikųjų skaičių bitų tinklelio ilgį n įprasta pasirinkti kaip 8 kartotinį (ty sveikąjį baitų skaičių).
Jei dydis vaizduojamas ženklu, kairysis (aukščiausias) skaitmuo rodo teigiamą skaičių, jei jame yra nulis, ir neigiamą, jei jame yra vienas.
Skaičiai numeruojami iš dešinės į kairę, pradedant nuo 0. Pav. .2.2 rodo bitų numeraciją dviejų baitų mašininiame žodyje.
Ryžiai. 2.2. Hbitų mastelio keitimas dviejų baitų mašininiame žodyje
Papildomas kodas teigiamas skaičius yra toks pat kaip ir jo tiesioginis kodas. Tiesioginį sveikojo skaičiaus kodą galima gauti taip: skaičius verčiamas į dvejetainė sistema skaičiavimas, o tada jo dvejetainis žymėjimas kairėje papildomas tiek nereikšmingų nulių, kiek to reikalauja duomenų tipas, kuriam skaičius priklauso.
Pavyzdžiui, jei skaičius 37 (10) = 100101 (2) deklaruojamas kaip sveikasis skaičius (pasižymėta šešiolika bitų), tada jo tiesioginis kodas yra 0000000000100101, o jei tai yra ilga reikšmė (pasižymėta trisdešimt dviem bitais), tada jo tiesioginis kodas yra. Kad žymėjimas būtų kompaktiškesnis, dažniau naudojamas šešioliktainis kodo atvaizdavimas. Gauti kodai gali būti atitinkamai perrašyti į 0025 (16) ir 00000025 (16).
Papildomą neigiamo sveikojo skaičiaus kodą galima gauti naudojant šį algoritmą:
užsirašykite tiesioginį numerio modulio kodą;
apverskite jį (vienetus pakeiskite nuliais, nulius - vienetais);
pridėti vieną prie atvirkštinio kodo.
Pavyzdžiui, parašykime dviejų komplemento kodą -37, interpretuodami jį kaip ilgą (32 bitų pasirašytą) reikšmę:
tiesioginis numerio 37 kodas yra ;
atvirkštinis kodas;
papildomas kodas arba FFFFFFDB (16) .
Gaunant skaičių pagal jo papildomą kodą, pirmiausia reikia nustatyti jo ženklą. Jei skaičius yra teigiamas, tiesiog išverskite jo kodą į dešimtainę skaičių sistemą. Esant neigiamam skaičiui, turi būti atliktas toks algoritmas:
iš kodo atimkite skaičių 1;
invertuoti kodą;
išversti į dešimtainė sistema skaičiavimas. Parašykite gautą skaičių su minuso ženklu.
Pavyzdžiai. Užrašykime skaičius, atitinkančius papildomus kodus:
0000000000010111. Kadangi reikšmingiausiame bite rašomas nulis, rezultatas bus teigiamas. Tai yra numerio 23 kodas.
1111111111000000. Čia rašomas neigiamo skaičiaus kodas. Vykdome algoritmą: 1) 1111111111000000 (2) - 1 (2) = 1111111110111111 (2) ; 2) 0000000001000000; 3) 1000000 (2) = 64 (10) . Atsakymas: -64.
Tikslas: 1) išstudijuoti funkcijų apibūdinimo taisykles; 2) įgyti funkcijų naudojimo rašant programas C++ kalba įgūdžių.
Teorinė informacija
Pagrindinis programų vienetas C++ kalba yra funkcija.
Funkcija- logiškai užbaigtas, tam tikru būdu sukurtas programos fragmentas, turintis pavadinimą. Funkcijos leidžia padalyti dideles skaičiavimo užduotis į mažesnes.
Kiekvienoje C++ programoje būtinai yra funkcija, vadinama main, kuri yra programos turinys. Visoms kitoms funkcijoms, jei jos yra programoje, turi būti deklaruojami prototipai – scheminiai vaizdai, kurie kompiliatoriui nurodo kiekvienos programos funkcijos pavadinimą ir formą.
Funkcijos prototipo sintaksė su parametrais:
grąžinimo_vertės_tipas funkcijos_pavadinimas (parametrų_sąrašas_su_tipų_nurodymu);
Funkcijos C++ yra standartinės (bibliotekos) ir vartotojo programuojamos.
Standartinės funkcijos
Standartinių funkcijų aprašymai pateikiami failuose, įtrauktuose į programą naudojant direktyvą #include. Tokie failai vadinami antrašte; jie turi plėtinį h.
Funkcijos pavadinimo nuoroda pagrindinėje programoje vadinama funkcijos iškvietimu.
Iškvietus funkcijas, atliekami kai kurie veiksmai arba apskaičiuojama tam tikra reikšmė, kuri vėliau naudojama programoje.
y=sin(x); //sinuso skaičiavimo funkcija
Funkcijos apibrėžimas
Apskritai funkcijos apibrėžiamos taip:
grąžinimo_vertės_tipas funkcijos_pavadinimas (tipas parametro_pavadinimas,...,tipas parametro_pavadinimas)
function_body
Programuojamos funkcijos
Funkcijos, kurias pats programuotojas sukuria, supaprastina programų rašymo procesą, nes:
padėti išvengti perprogramavimo, nes ta pati funkcija gali būti naudojama skirtingose programose;
padidinti programos moduliškumo lygį, todėl lengviau skaityti, keisti ir taisyti klaidas.
Pavyzdys9 .1. Sukurkime funkciją, kuri spausdina 65 simbolius „*“ iš eilės. Kad ši funkcija veiktų tam tikrame kontekste, ji įtraukta į firminių blankų spausdinimo programą. Programa susideda iš funkcijų: main() ir stars().
// firminis blankas
#įtraukti
const int Limit=65;
tuščios žvaigždės (tuščios); // žvaigždės() funkcijos prototipas
cout<<"Moscow Institute of
Electronic Engineering"< // Stars() funkcijos apibrėžimas už (skaičius = 1; skaičius<=Limit; count++) Mes pažvelgėme į paprastos funkcijos, kuri neturi argumentų ir nepateikia jokių reikšmių, pavyzdį. Kaip pavyzdį apsvarstykite funkcijos parametrų naudojimą. Pavyzdys9.
2.
Parašykime tarpo () funkciją,
kurio argumentas bus tarpų, kuriuos ši funkcija turėtų išspausdinti, skaičius. #define adresą "Zelenogradas" #define pavadinimas „Maskvos elektronikos inžinerijos institutas“ #define skyrius "Informatika ir programavimas" const int LIMIT=65; #įtraukti tuščias tarpas (int numeris); cout< tarpai=(LIMIT - strlen(vardas))/2; // Apskaičiuokite kiek // reikia tarpų cout< space((LIMIT - strlen(department))/2); // argumentas yra išraiška cout< // Stars() funkcijos apibrėžimas už (skaičius = 1; skaičius<=LIMIT; count++) // Funkcijos tarpo() apibrėžimas tuščias tarpas (int numeris) už (skaičius = 1; skaičius<=number; count++) Kintamasis skaičius vadinamas formaliuoju argumentu. Šis kintamasis įgauna tikrojo argumento reikšmes, kai funkcija iškviečiama. Kitaip tariant, formalus argumentas yra vadinamosios paprogramės apibrėžimo kintamasis, ir tikras argumentas- tam tikra reikšmė, kurią iškviečianti programa priskiria šiam kintamajam. Jei norint susisiekti su tam tikra funkcija reikia daugiau nei vieno argumento, kartu su funkcijos pavadinimu galite nurodyti kableliais atskirtą argumentų sąrašą: tuščias spausdinimo skaičius (int i, int j) (išeiti<<"Координаты
точек”<< i << j < Funkcijos įvesties reikšmę galima apdoroti dėl buvimo argumentas; išvesties reikšmė grąžinama naudojant return raktinį žodį. Atskira sistema (posistemė, paprogramė), kuri gauna valdymo įvestis argumentų reikšmių pavidalu. Išvestyje funkcija grąžina rezultatą, kuris gali būti arba skaliarinė reikšmė, arba vektorinė reikšmė (struktūra, indekso masyvas ir kt.). Vykdant funkciją, valdomoje sistemoje taip pat gali būti atlikti kai kurie pakeitimai, tiek grįžtami, tiek negrįžtami. Kai kuriose programavimo kalbose (pavyzdžiui, Pascal) funkcijos ir procedūros (paprogramės, kurios negrąžina reikšmių) aiškiai išskiriamos pagal kalbos sintaksę. Kitose – pavyzdžiui, C kalboje – procedūros yra ypatingas atvejis (poaibis) funkcijų, kurios grąžina tipo (pseudotipo) reikšmę void – tuščią reikšmę. Kai funkcija iškviečiama, jai perduodami argumentai. Jei argumentas yra nuoroda į atminties sritį (kintamasis, rodyklė arba nuoroda), tai funkcija, priklausomai nuo jos parametro tipo, gali naudoti savo reikšmę (pavyzdžiui, sukurti kintamąjį, nukopijuoti ten argumento reikšmę ) arba patį argumentą (sukurkite nuorodą į sritį, kurią atmintis nurodo argumentu). Tokia funkcija nereikalauja jokių argumentų. Wikimedia fondas. 2010 m. Vikižodynas turi straipsnį "funkcija" Funkcija yra polisemantinis terminas, reiškiantis ryšį tarp elementų, kuriuose vieno pakeitimas reiškia pasikeitimą... Vikipedija „Stub“ funkcija programuojant – tai funkcija, kuri neatlieka jokio prasmingo veiksmo, grąžina tuščią rezultatą arba įvesties duomenis nepakeistus. Lygiavertis angliškas žodis yra stub. Naudojamas: Aiškumo dėlei, kai ... ... Vikipedija aukštesnė psichinė funkcija: atsigavimas- (aukštesnių psichinių funkcijų atkūrimas) neuropsichologijos skyrius, skirtas aukštesnių psichikos funkcijų, sutrikusių dėl vietinių smegenų smegenų pažeidimų, funkcijų atkūrimo mechanizmų ir metodų tyrinėjimui. Remiantis idėjomis apie... Didžioji psichologinė enciklopedija Matematinis programavimas yra matematinė disciplina, kuri tiria teoriją ir metodus, kaip išspręsti funkcijų ekstremalių radimo baigtinių matmenų vektorinės erdvės aibėse, kurias nustato tiesiniai ir netiesiniai apribojimai ... ... Vikipedija Kompiuterizacijos srityje tinklo užduočių programavimo arba kitaip vadinamo tinklo programavimo sąvoka yra gana panaši į lizdų programavimo ir kliento-serverio programavimo sąvokas, ... ... Wikipedia Aukštesnės eilės funkcija yra funkcija, kuri kitas funkcijas priima kaip argumentus arba kaip rezultatą grąžina kitą funkciją. Pagrindinė idėja yra ta, kad funkcijos turi tokį patį statusą kaip ir kiti duomenų objektai... ... Vikipedija MATEMATINIS PROGRAMAVIMAS- sudėtinga matematika. Kelių kintamųjų funkcijų ekstremumo (maksimalaus arba minimumo) radimo problemų sprendimo modeliai ir metodai, esant apribojimams nelygybių pavidalu. Tai reiškia, kad kintamieji apibūdina kai kuriuos mechanizmo aspektus ... Rusijos sociologinė enciklopedija Matematikos disciplina, tirianti matematiką. programų abstrakcijos, traktuojamos kaip formalia kalba išreikšti objektai, turintys tam tikrą informaciją ir loginiai. struktūra ir vykdoma automatiškai. įrenginiai. P. t....... Matematinė enciklopedija Programavimo funkcija yra paprogramės tipas. Ypatybė, kuri ją išskiria iš kitos rūšies procedūrų paprogramių, yra ta, kad funkcija grąžina reikšmę, o jos iškvietimas gali būti naudojamas programoje kaip išraiška. Žiūrint iš taško ... ... Vikipedija PROGRAMAVIMAS, MATEMATIKA- taikomosios matematikos šaka, naudojama kaip ekonominių tyrimų metodas. Plėtoja sąlyginių ekstremalių problemų sprendimo teoriją ir metodus, yra pagrindinė įvairių valdymo problemų analizės formalaus aparato dalis... Didysis ekonomikos žodynas Jei esate kūrėjas kaip aš, tikriausiai pirmiausia išmokote OOP paradigmą. Jūsų pirmoji kalba buvo Java arba C++ – arba, jei pasisekė, Ruby, Python arba C# – todėl tikriausiai žinote, kas yra klasės, objektai, egzemplioriai ir pan. Ko tikrai nelabai supranti, tai tos keistos paradigmos, vadinamos funkciniu programavimu, pagrindai, kurie ženkliai skiriasi ne tik nuo OOP, bet ir nuo procedūrinio, į prototipus orientuoto ir kitokio programavimo. Funkcinis programavimas populiarėja – ir dėl geros priežasties. Pati paradigma nėra nauja: „Haskell“ yra bene funkcionaliausia kalba ir ji atsirado 90-aisiais. Tokios kalbos kaip Erlang, Scala, Clojure taip pat patenka į funkcinio apibrėžimą. Vienas iš pagrindinių funkcinio programavimo privalumų yra galimybė rašyti programas, kurios veikia vienu metu (jei jau pamiršote, kas tai yra - atnaujinkite atmintį skaitydami), ir be klaidų - tai yra, aklavietės ir gijų sauga jūsų netrukdys. Funkcinis programavimas turi daug privalumų, tačiau galimas maksimalus procesoriaus resursų panaudojimas dėl konkurencinės elgsenos yra pagrindinis jo privalumas. Žemiau apžvelgsime pagrindinius funkcinio programavimo principus. Įvadas:
Visi šie principai yra neprivalomi (daugelyje kalbų jų visiškai nesilaikoma). Visi jie yra teoriniai ir reikalingi norint tiksliausiai apibrėžti funkcinę paradigmą. Ši taisyklė neabejotinai yra pagrindinė funkcinio programavimo taisyklė. Visos funkcijos yra grynos, jei atitinka dvi sąlygas: Pirma taisyklė aiški – jei iškviečiu funkciją sum(2, 3), tikiuosi, kad rezultatas visada bus 5. Kai tik iškviečiate funkciją rand() arba pasiekiate kintamąjį, kuris nėra apibrėžtas funkcijoje, pažeidžiamas funkcijos grynumas, o tai neleidžiama atliekant funkcinį programavimą. Antroji taisyklė – jokio šalutinio poveikio – platesnio pobūdžio. Šalutinis poveikis yra kažko kito, nei šiuo metu vykdomos funkcijos, pakeitimas. Kintamojo keitimas už funkcijos ribų, rašymas į konsolę, išimtis, duomenų skaitymas iš failo yra šalutinių poveikių, kurie atima funkcijos grynumą, pavyzdžiai. Tai gali atrodyti kaip rimtas apribojimas, bet pagalvokite dar kartą. Jei esate tikri, kad funkcijos iškvietimas nieko nepakeis „išorėje“, šią funkciją galite naudoti bet kuriuo atveju. Tai atveria kelią konkurencingam programavimui ir kelių gijų programoms. Ši koncepcija nėra FP ypatybė (ji naudojama Javascript, PHP ir kitose kalbose), bet tai yra reikalavimas. Tiesą sakant, Vikipedijoje yra visas straipsnis, skirtas pirmos klasės funkcijoms. Kad funkcija būtų pirmos klasės, ji turi būti deklaruojama kaip kintamasis. Tai leidžia valdyti funkciją kaip įprastą duomenų tipą ir vis tiek ją vykdyti. Čia viskas paprasta. Funkciniame programavime negalite pakeisti kintamojo, kai jis buvo inicijuotas. Galite kurti naujus, bet negalite keisti esamų – ir dėl to galite būti tikri, kad joks kintamasis nepasikeis. Sunku pateikti teisingą santykinio skaidrumo apibrėžimą. Manau, kad tiksliausias yra toks: jei funkcijos iškvietimą galite pakeisti grąžinama reikšme, o būsena nesikeičia, tada funkcija yra gana skaidri. Tai gali būti akivaizdu, bet pateiksiu pavyzdį. Tarkime, kad turime „Java“ funkciją, kuri prideda 3 ir 5: Viešas int addNumbers()( return 3 + 5; ) addNumbers() // 8 8 // 8 Akivaizdu, kad bet koks šios funkcijos iškvietimas gali būti pakeistas 8, o tai reiškia, kad funkcija yra gana skaidri. Štai nepermatomos funkcijos pavyzdys: Public void printText()( System.out.println("Hello World"); ) printText() // nieko nepateikia, bet išspausdina "Hello World" Ši funkcija nieko negrąžina, bet spausdina tekstą, o jei funkcijos iškvietimas bus pakeistas niekuo, konsolės būsena bus kitokia – vadinasi, funkcija nėra santykinai skaidri. Funkcinis programavimas labai priklauso nuo matematinės sistemos, vadinamos lambda skaičiavimu. Nesu matematikas, todėl nesileisiu į detales, bet noriu atkreipti dėmesį į du pagrindinius lambda skaičiavimo principus, kurie sudaro pačią funkcinio programavimo koncepciją: Kaip jau sakiau, lambda skaičiavimas tuo nesibaigia, bet mes apžvelgėme tik pagrindinius su FP susijusius aspektus. Dabar pokalbyje apie funkcinį programavimą galite blykstelėti žodžiu „lambda skaičiuoklė“ ir visi manys, kad tu klampi 🙂 Funkcinis programavimas yra tikras smegenų įtempimas, tačiau tai labai galingas metodas ir tikiu, kad jo populiarumas tik augs. Jei norite sužinoti daugiau apie funkcinį programavimą, patariame susipažinti su FP principų naudojimo JavaScript ( , ) pavyzdžiais, taip pat pavyzdžiais, skirtais funkciniam C#.Funkcijos parametrai
Šalutinis poveikis
Funkcijos ir procedūros
Argumentai ir parinktys
Funkcija be argumentų
taip pat žr
Nuorodos
Pažiūrėkite, kas yra „Funkcija (programavimas)“ kituose žodynuose:
1. Visos funkcijos yra švarios
2. Visos funkcijos yra pirmos klasės ir aukštesnės eilės
3. Kintamieji yra nekintantys
4. Santykinis funkcijų skaidrumas
5. Funkcinis programavimas remiasi lambda skaičiavimu
Išvada