Nic dziwnego, że nazwałem ten artykuł „Funkcje jako integralna część programowania”, bo bez nich moim zdaniem żaden język nie ma prawa istnieć. Co to jest? Funkcja jest głównym budulcem dobrze napisanego programu. Nie tylko ułatwia odczytywanie kodu, ale także radykalnie zmienia ideę programowanie strukturalne. Za pomocą funkcji możesz ponownie wykorzystać poszczególne części programu, przekazując im dowolne parametry. Nie można sobie wyobrazić żadnego poważnego programu bez tego cudu elementu programistycznego.

Pokrótce opowiem, jak to działa. Funkcja jest blokiem instrukcji, które twój program może wywołać. Podczas uzyskiwania dostępu do nagłówka tego bloku (nazwy funkcji) jest on wykonywany i wykonuje pewne akcje określone przez programistę. Następnie ten blok zwraca odebraną wartość i przekazuje ją do programu głównego. Pozwólcie, że wyjaśnię w praktyce.

Z grubsza wszystko wygląda tak. Pokrótce wyjaśnię. Tworzymy jakąś zmienną i przypisujemy jej wynik wykonania funkcji myfunc, która z kolei oblicza wartość podniesienia do kwadratu pewnej liczby. Funkcje nie są wykonywane od razu podczas uruchamiania programu, ale tylko wtedy, gdy są wywoływane. Może trochę zagmatwane, ale tak właśnie jest.

Jak wywołać funkcję?

Aby wywołać funkcję, musisz ją utworzyć. Chociaż są też wbudowane funkcje. Na przykład to: cos, sin, md5, liczyć, abs i tak dalej. Aby je wywołać, wystarczy przypisać do zmiennej żądaną wartość.

Argument funkcji to wartość, którą przekazujesz, gdy ją wywołujesz. Argumenty funkcji są umieszczane w nawiasach. Podczas tworzenia funkcji określasz warunkowe nazwy argumentów. Następnie te nazwy mogą być używane w treści funkcji jako zmienne lokalne. Wróćmy do funkcji, które sam tworzy użytkownik. Robi się to bardzo łatwo. Najpierw tworzona jest treść funkcji:

Funkcja hello() ( echo "Witaj świecie!"; )

Wtedy to nazywamy. A jeśli nie ma parametrów, to po prostu wstawiamy nawiasy. Do wywołania tej funkcji używamy tylko linii: Witam();. Każda funkcja może również zwrócić wartość za pomocą zastrzeżone słowo zwrócić. Ta instrukcja kończy wykonywanie funkcji i wysyła wartość zwracaną do programu wywołującego. function sum($pierwszy, $drugi) ($r=$pierwszy + $drugi; return $r;) echo sum(2,5); wynik wykonania programu będzie równy 7. Zmienne lokalne i globalne

Jak w każdym innym języku programowania, istnieją zmienne, które są dostępne tylko wewnątrz funkcji oraz zmienne, które są dostępne w kodzie samego programu. Takie zmienne nazywane są odpowiednio lokalnymi i globalnymi. Wewnątrz funkcji nie możesz po prostu odwołać się do zmiennej, która została utworzona poza tą funkcją. Jeśli spróbujesz to zrobić, utworzysz nową zmienną o tej samej nazwie, ale lokalną dla funkcji.

$per="Dima"; function primer() // Wykonaj: wyjście zmiennej lokalnej ( echo "Nazywam się ".$per; ) echo primer();

W takim przypadku na ekranie pojawi się fraza „Nazywam się”. Oznacza to, że wewnątrz funkcji startera została utworzona zmienna $per, która domyślnie została przypisana zerowa wartość. Aby uniknąć takich ościeży, musisz użyć operatora światowy. Poprawmy odpowiednio powyższy kod:

$per="Dima"; function primer() // Wykonuje: wyjście zmiennej globalnej ( global $per; echo "Nazywam się ".$per; ) echo primer();

Teraz wszystko powinno być w porządku - problem rozwiązany. Tylko nie zapominaj, że jeśli funkcja zmieni wartość zmiennej zewnętrznej, taka zmiana wpłynie na cały program, więc musisz ostrożnie używać tego operatora!

Funkcje z dwoma lub więcej argumentami

Niektóre argumenty przekazywane do funkcji mogą być opcjonalne, dzięki czemu funkcja jest mniej wymagająca. Poniższy przykład wyraźnie to pokazuje:

... function font($text, $size=5) // Wykonaj: wypisz rozmiar czcionki ( echo " „.$tekst”."; ) font("Witaj
",1); czcionka("Witaj
",2); czcionka("Witaj
",3); czcionka("Witaj
",4); czcionka("Witaj
",5); czcionka("Witaj
",6); czcionka("Witaj
");

Domyślnie wielkość czcionki to 5. Jeśli pominiemy drugi parametr funkcji, to będzie on równy tej wartości.

Wniosek

Zanim się pożegnam, chciałbym zwrócić uwagę na jedną radę. Polega na umieszczeniu wszystkich funkcji, które napisałeś w jednym pliku (np. function.php). A potem w pliku, w którym trzeba wywołać funkcję, wystarczy dołączyć function.php i wszystko będzie gotowe do użycia. Ułatwi to zrozumienie logiki Twojego programu. Aby się połączyć, użyj:

include_once("funkcja.php");

require_once("funkcja.php");

Jeśli rozumiesz istotę problemu rozważanego w tym artykule, jestem pewien, że możesz łatwo korzystać z funkcji w swoich programach. Po raz kolejny ma to na celu uczynienie ich bardziej edytowalnymi i wielokrotnego użytku.

Funkcje nad liczbami. Język VB ma następujące funkcje matematyczne: abs(x) - kalkulacja modułu; sqr(x) - obliczenie pierwiastka kwadratowego, atn(x) - obliczanie tangensa łuku; sałata(x) - obliczanie cosinusa; grzech(x) - obliczenie sinusa; dębnik(x) - obliczenie tangensa; dziennik(x) - obliczenie logarytmu naturalnego, do potęgi(x) - obliczenie wykładnika, gdzie x- argument funkcji typu numerycznego. Aby obliczyć wartości funkcji, których nie ma w języku VisualBasic, konieczne jest wykorzystanie formuł znanych z matematyki.

Wyrażenie tak= w VB byłoby napisane tak: y=sin(x^2)+sqr(tan(x))*(x+5) ^ (1/5).

Argument funkcji musi być napisany w nawiasach.

Funkcje do konwersji wartości z jednego typu na inny. Język programowania VB udostępnia funkcje służące do zmiany typu danych wartości. Na przykład istnieje zmienna a typu Double i zmienna s typu String.

Aby zapisać zmienną a do zmiennej s, konieczne jest wykonanie konwersji typu S=CStr(a) oraz zapisanie zmiennej s do zmiennej a–a=CDbl(s).

Funkcje VB do konwersji typu wartości:

CStr - konwertuj na ciąg;

CByte - konwersja na Byte;

CInt - konwersja do liczby całkowitej;

CLng - konwersja do Long;

CSng - konwersja do Single;

CDbl - konwersja do Double.

2.6. Reprezentacja różnych typów danych w pamięci komputera

Do reprezentowania informacji w pamięci komputera (zarówno numerycznych, jak i nienumerycznych) używana jest metoda kodowania binarnego.

Elementarna komórka pamięci komputera ma długość 8 bitów (bajtów). Każdy bajt ma swój własny numer (nazywa się adres zamieszkania). Największa sekwencja bitów, którą komputer może przetworzyć jako całość, nazywa się słowo maszyny. Długość słowa maszynowego zależy od długości słowa procesora i może wynosić 16, 32, 64 bity itd.

Kodowanie znaków. Do zakodowania znaków wystarczy jeden bajt. W tym przypadku można przedstawić 256 znaków (z kody dziesiętne od 0 do 255). Zestaw znaków komputerów osobistych zgodnych z IBM PC jest najczęściej rozszerzeniem kodu ASCII (American Standard Code for Information Interchange - standardowy amerykański kod wymiany informacji). Obecnie używane są również dwubajtowe reprezentacje znaków.

Reprezentacja liczb całkowitych w uzupełnieniu do dwóch. Zakres wartości zależy od liczby bitów pamięci przydzielonych do ich przechowywania. n-bitowa pamięć może pomieścić różne wartości Na przykład wartości typu Integer leżą w zakresie od -32768 (-2 15) do 32767 (2 15 - 1), a 2 bajty (16 bitów) są przydzielane do ich przechowywania; typu Long - w zakresie od -2 31 do 2 31 - 1 i mieszczą się w 4 bajtach (32 bity).

Dla reprezentacji bez znaku liczb binarnych liczb całkowitych waha się od 0 do
, a w podpisanym oświadczeniu - od
zanim
. We współczesnych komputerach zwyczajowo wybiera się długość n bitowej siatki liczb całkowitych jako wielokrotność 8 (tj. całkowitą liczbę bajtów).

W przypadku reprezentowania wielkości znakiem, skrajna lewa (najwyższa) cyfra oznacza liczbę dodatnią, jeśli zawiera zero, a ujemną, jeśli zawiera jeden.

Cyfry są ponumerowane od prawej do lewej, zaczynając od 0. Na ryc. .2.2 pokazuje numerację bitów w dwubajtowym słowie maszynowym.

Ryż. 2.2. Hskalowanie bitowe w dwubajtowym słowie maszynowym

Dodatkowy kod liczba dodatnia jest taka sama jak jego kod bezpośredni. Bezpośredni kod liczby całkowitej można uzyskać w następujący sposób: liczba jest tłumaczona na system binarny liczenie, a następnie jego zapis binarny po lewej stronie jest uzupełniony o tyle nieznacznych zer, ile wymaga typ danych, do którego należy liczba.

Na przykład, jeśli liczba 37 (10) = 100101 (2) jest zadeklarowana jako wartość całkowita (ze znakiem szesnaście bitów), to jej kod bezpośredni to 0000000000100101, a jeśli jest to wartość Long (podpisana trzydzieści dwa bity), to jego bezpośredni kod jest. Aby uzyskać bardziej zwartą notację, częściej stosuje się szesnastkową reprezentację kodu. Otrzymane kody można przepisać odpowiednio jako 0025 (16) i 00000025 (16).

Dodatkowy kod ujemnej liczby całkowitej można uzyskać za pomocą następującego algorytmu:

    zapisz bezpośredni kod modułu numeru;

    odwróć to (zastąp jedynki zerami, zera jedynkami);

    dodaj jeden do kodu odwrotnego.

Na przykład, zapiszmy kod uzupełniający do dwóch równy -37, interpretując go jako wartość Long (32-bitową ze znakiem):

    bezpośredni kod dla liczby 37 to ;

    kod odwrotny;

    dodatkowy kod lub FFFFFFDB (16) .

Uzyskując numer za pomocą dodatkowego kodu, przede wszystkim konieczne jest określenie jego znaku. Jeśli liczba okaże się dodatnia, po prostu przetłumacz jej kod na system liczb dziesiętnych. W przypadku liczby ujemnej należy wykonać następujący algorytm:

    odejmij cyfrę 1 od kodu;

    odwróć kod;

    Przetłumacz na system dziesiętny rachunek. Wpisz wynikową liczbę ze znakiem minus.

Przykłady. Zapiszmy liczby odpowiadające dodatkowym kodom:

    0000000000010111. Ponieważ zero jest zapisane w najbardziej znaczącym bicie, wynik będzie dodatni. To jest kod numeru 23.

    1111111111000000. Tutaj wpisany jest kod liczby ujemnej. Wykonujemy algorytm: 1) 11111111111000000 (2) - 1 (2) = 1111111110111111 (2) ; 2) 000000001000000; 3) 1000000 (2) = 64 (10) . Odpowiedź: -64.

Cel: 1) zapoznać się z zasadami opisu funkcji; 2) nabyć umiejętności posługiwania się funkcjami podczas pisania programów w C++.

Informacje teoretyczne

Główną jednostką programów w języku C++ jest funkcja.

Funkcjonować- logicznie skompletowany, w pewien sposób zaprojektowany fragment programu, który posiada nazwę. Funkcje pozwalają dzielić duże zadania obliczeniowe na mniejsze.

Każdy program C++ koniecznie zawiera funkcję o nazwie main, która jest ciałem programu. Dla wszystkich innych funkcji, jeśli są obecne w programie, należy zadeklarować prototypy - schematyczne reprezentacje, które informują kompilator o nazwie i formie każdej funkcji w programie.

Składnia prototypu funkcji z parametrami:

return_value_type nazwa_funkcji (lista_parametrów_ze_wskazaniem_typów);

Funkcje w C++ są standardowe (biblioteczne) i programowalne przez użytkownika.

Funkcje standardowe

Opisy standardowych funkcji znajdują się w plikach zawartych w programie za pomocą dyrektywy #include. Takie pliki nazywane są nagłówkiem; mają rozszerzenie h.

Odwoływanie się do nazwy funkcji w programie głównym jest nazywane wywołaniem funkcji.

Wywołanie funkcji prowadzi do wykonania pewnych czynności lub obliczenia jakiejś wartości, która jest następnie wykorzystywana w programie.

y=sin(x); //funkcja obliczania sinus

Definicja funkcji

Ogólnie funkcje definiuje się w następujący sposób:

zwracana_wartość_typ nazwa_funkcji (wpisz nazwa_parametru,...,wpisz nazwa_parametru)

function_body

Programowalne funkcje

Funkcje, które sam programista tworzy, upraszczają proces pisania programów, ponieważ:

    pomagają uniknąć ponownego programowania, ponieważ ta sama funkcja może być używana w różnych programach;

    zwiększyć poziom modularności programu, dzięki czemu łatwiej jest czytać, modyfikować i poprawiać błędy.

Przykład9 .1. Stwórzmy funkcję, która wypisuje 65 znaków "*" z rzędu. Aby ta funkcja działała w pewnym kontekście, jest ona zawarta w programie do drukowania papieru firmowego. Program składa się z funkcji: main() i stars().

// papier firmowy

#włączać

const int Limit=65;

puste gwiazdki (pustka); // prototyp funkcji stars()

Cout<<"Moscow Institute of Electronic Engineering"<

// Definiowanie funkcji stars()

for (liczba=1; ilość<=Limit; count++)

Przyjrzeliśmy się przykładowi prostej funkcji, która nie ma argumentów i nie zwraca żadnych wartości.

Parametry funkcji

Rozważ użycie parametrów funkcji jako przykładu.

Przykład9. 2. Napiszmy funkcję space(), którego argumentem będzie liczba spacji, które ta funkcja powinna wypisać.

#define adres " Zelenograd"

#define nazwa "Moskiewski Instytut Elektroniki"

#define dział "Informatyka i Programowanie"

const int LIMIT=65;

#włączać

pusta spacja (liczba int);

Cout<

spacje=(LIMIT - strlen(nazwa))/2; // Oblicz ile

// potrzebujesz spacji

Cout<

spacja((LIMIT - strlen(dział))/2); // argument jest wyrażeniem

Cout<

// Definicja funkcji stars()

for (liczba=1; ilość<=LIMIT; count++)

// Definicja funkcji space()

pusta spacja (liczba wewnętrzna)

for (liczba=1; ilość<=number; count++)

Numer zmiennej nazywa się argumentem formalnym. Ta zmienna przyjmuje wartości rzeczywistego argumentu, gdy funkcja jest wywoływana. Innymi słowy, formalny argument jest zmienną w definicji wywoływanego podprogramu, a rzeczywisty argument- konkretna wartość przypisana tej zmiennej przez program wywołujący.

Jeśli do komunikacji z określoną funkcją wymagany jest więcej niż jeden argument, wraz z nazwą funkcji można podać listę argumentów oddzielonych przecinkami:

void printnum (int i, int j)

(cout<<"Координаты точек”<< i << j <

Wartość wejściowa funkcji może być przetwarzana ze względu na obecność argument; wartość wyjściowa jest zwracana za pomocą słowa kluczowego return.

Osobny system (podsystem, podprogram), który otrzymuje wejścia sterujące w postaci wartości argumentów. Na wyjściu funkcja zwraca wynik, który może być wartością skalarną lub wektorową (struktura, tablica indeksów itp.). W trakcie realizacji funkcji można również dokonać pewnych zmian w zarządzanym systemie, zarówno odwracalnych, jak i nieodwracalnych.

Efekt uboczny

Funkcje i procedury

W niektórych językach programowania (na przykład w Pascalu) funkcje i procedury (podprogramy, które nie zwracają wartości) są wyraźnie rozróżniane składnią języka. W innych - na przykład w języku C - procedury są szczególnym przypadkiem (podzbiorem) funkcji zwracających wartość typu (pseudotyp) void - wartość pusta.

Argumenty i opcje

Kiedy funkcja jest wywoływana, przekazywane są do niej argumenty. Jeśli argument jest referencją do obszaru pamięci (zmiennej, wskaźnika lub referencji), to funkcja, w zależności od typu swojego parametru, może użyć jej wartości (na przykład utworzyć zmienną, skopiować tam wartość argumentu ) lub sam argument (utwórz odwołanie do obszaru pamięci, do którego odwołuje się argument).

Funkcja bez argumentów

Taka funkcja nie wymaga żadnych argumentów.

Zobacz też

Spinki do mankietów

  • Funkcje PHP. Składnia i przykłady użycia funkcji PHP

Fundacja Wikimedia. 2010 .

Zobacz, co „Funkcja (programowanie)” znajduje się w innych słownikach:

    Wikisłownik ma artykuł "funkcja" Funkcja to termin polisemantyczny, który oznacza relację między elementami, w której zmiana w jednym pociąga za sobą zmianę ... Wikipedia

    Funkcja skrótowa w programowaniu to funkcja, która nie wykonuje żadnej znaczącej akcji, zwraca pusty wynik lub dane wejściowe bez zmian. Odpowiednikiem angielskiego słowa jest skrót. Używany: dla jasności, gdy ... ... Wikipedia

    wyższa funkcja psychiczna: regeneracja- (przywrócenie wyższych funkcji umysłowych) dział neuropsychologii poświęcony badaniu mechanizmów i metod przywracania funkcji wyższych funkcji umysłowych, upośledzonych z powodu uszkodzeń lokalnego mózgu mózgu. W oparciu o pomysły dotyczące... Wielka Encyklopedia Psychologiczna

    Programowanie matematyczne to dyscyplina matematyczna, która bada teorię i metody rozwiązywania problemów znajdowania ekstremów funkcji na zbiorach skończenie wymiarowej przestrzeni wektorowej określonej przez ograniczenia liniowe i nieliniowe ... ... Wikipedia

    W dziedzinie komputeryzacji koncepcja programowania zadań sieciowych lub inaczej nazywana programowaniem sieciowym jest dość podobna do koncepcji programowania gniazd i programowania klient-serwer, ... ... Wikipedia

    Funkcja wyższego rzędu to funkcja, która przyjmuje inne funkcje jako argumenty lub zwraca inną funkcję jako wynik. Podstawowa idea polega na tym, że funkcje mają taki sam status jak inne obiekty danych.... ... Wikipedia

    PROGRAMOWANIE MATEMATYCZNE- złożone matematyczne. modele i metody rozwiązywania problemów znajdowania ekstremum (maksimum lub minimum) funkcji kilku zmiennych z ograniczeniami w postaci nierówności. Oznacza to, że zmienne charakteryzują niektóre aspekty mechanizmu ... ... Rosyjska encyklopedia socjologiczna

    Dyscyplina matematyczna badająca matematykę. abstrakcje programów, traktowane jako obiekty wyrażone w języku formalnym, z pewną informacją i logiką. konstrukcja i podlega realizacji na automatyczne. urządzenia. P. t. ... ... Encyklopedia matematyczna

    Funkcja w programowaniu jest rodzajem podprogramu. Cechą odróżniającą ją od innego rodzaju podprogramów procedury jest to, że funkcja zwraca wartość, a jej wywołanie może być użyte w programie jako wyrażenie. Z punktu widzenia ... ... Wikipedia

    PROGRAMOWANIE, MATEMATYKA- dział matematyki stosowanej stosowany jako metoda w badaniach ekonomicznych. Rozwija teorię i metody rozwiązywania warunkowych problemów ekstremalnych, jest główną częścią formalnego aparatu do analizy różnych problemów sterowania ... Wielki Słownik Ekonomiczny

Jeśli jesteś programistą takim jak ja, prawdopodobnie najpierw nauczyłeś się paradygmatu OOP. Twoim pierwszym językiem była Java lub C++ - lub, jeśli masz szczęście, Ruby, Python lub C# - więc prawdopodobnie wiesz, czym są klasy, obiekty, instancje itp. To, czego na pewno nie rozumiesz, to podstawy tego dziwnego paradygmatu zwanego programowaniem funkcjonalnym, który różni się znacznie nie tylko od programowania OOP, ale także od programowania proceduralnego, zorientowanego na prototypy i innych rodzajów programowania.

Programowanie funkcjonalne staje się popularne – i nie bez powodu. Sam paradygmat nie jest nowy: Haskell jest chyba najbardziej funkcjonalnym językiem, który powstał w latach 90-tych. Języki takie jak Erlang, Scala, Clojure również mieszczą się w definicji funkcjonalnego. Jedną z głównych zalet programowania funkcyjnego jest możliwość pisania programów, które działają współbieżnie (jeśli już zapomniałeś co to jest - odśwież pamięć poprzez odczyt) i bez błędów - czyli zakleszczenia i bezpieczeństwo wątkowe nie będą Ci przeszkadzać.

Programowanie funkcjonalne ma wiele zalet, ale jego główną zaletą jest możliwe maksymalne wykorzystanie zasobów procesora ze względu na konkurencyjne zachowanie. Poniżej przyjrzymy się podstawowym zasadom programowania funkcjonalnego.

Wstęp: Wszystkie te zasady są opcjonalne (wiele języków nie w pełni ich przestrzega). Wszystkie są teoretyczne i są potrzebne do jak najdokładniejszego zdefiniowania paradygmatu funkcjonalnego.

1. Wszystkie funkcje są czyste

Ta zasada jest z pewnością najważniejsza w programowaniu funkcjonalnym. Wszystkie funkcje są czyste, jeśli spełniają dwa warunki:

  1. Funkcja wywołana z tymi samymi argumentami zawsze zwraca tę samą wartość.
  2. Podczas wykonywania funkcji nie występują żadne skutki uboczne.

Pierwsza zasada jest jasna - jeśli wywołam funkcję sum(2, 3), oczekuję, że wynik będzie zawsze równy 5. Jak tylko wywołasz funkcję rand() lub uzyskasz dostęp do zmiennej, która nie jest zdefiniowana w funkcji, naruszona jest czystość funkcji, co jest niedozwolone w programowaniu funkcjonalnym.

Druga zasada – brak skutków ubocznych – ma szerszy charakter. Efektem ubocznym jest zmiana w czymś innym niż funkcja, która jest aktualnie wykonywana. Zmiana zmiennej poza funkcją, zapisywanie w konsoli, rzucanie wyjątku, odczytywanie danych z pliku to przykłady efektów ubocznych, które odbierają czystość funkcji. Może się to wydawać poważnym ograniczeniem, ale pomyśl jeszcze raz. Jeśli masz pewność, że wywołanie funkcji nie zmieni niczego „na zewnątrz”, możesz użyć tej funkcji w dowolnym scenariuszu. To otwiera drogę do konkurencyjnego programowania i aplikacji wielowątkowych.

2. Wszystkie funkcje są pierwszej klasy i wyższego rzędu

Ta koncepcja nie jest cechą FP (jest używana w JavaScript, PHP i innych językach) - ale jest wymogiem. W rzeczywistości Wikipedia ma cały artykuł poświęcony pierwszorzędnym funkcjom. Aby funkcja była pierwszej klasy, musi mieć możliwość zadeklarowania jej jako zmiennej. Dzięki temu funkcja może być manipulowana jak normalnym typem danych i nadal wykonywana.

3. Zmienne są niezmienne

Tutaj wszystko jest proste. W programowaniu funkcjonalnym nie można zmienić zmiennej po jej zainicjowaniu. Możesz tworzyć nowe, ale nie możesz zmieniać już istniejących - dzięki temu masz pewność, że żadna zmienna się nie zmieni.

4. Względna przejrzystość funkcji

Trudno podać prawidłową definicję względnej przejrzystości. Myślę, że najdokładniejsze jest to: jeśli możesz zastąpić wywołanie funkcji wartością zwracaną, a stan się nie zmienia, to funkcja jest stosunkowo przezroczysta. To może być oczywiste, ale podam przykład.

Załóżmy, że mamy funkcję Java, która dodaje 3 i 5:

Public int addNumbers()( zwraca 3 + 5; ) addNumbers() // 8 8 // 8

Oczywiście każde wywołanie tej funkcji można zastąpić 8, co oznacza, że ​​funkcja jest stosunkowo przezroczysta. Oto przykład nieprzezroczystej funkcji:

Public void printText()( System.out.println("Witaj świecie"); ) printText() // Zwraca nic, ale wyświetla "Witaj świecie"

Ta funkcja niczego nie zwraca, ale drukuje tekst, a jeśli wywołanie funkcji zostanie zastąpione niczym, stan konsoli będzie inny - co oznacza, że ​​funkcja nie jest w miarę przezroczysta.

5. Programowanie funkcjonalne oparte jest na rachunku lambda

Programowanie funkcjonalne w dużej mierze opiera się na systemie matematycznym zwanym rachunkiem lambda. Nie jestem matematykiem, więc nie będę wdawał się w szczegóły - ale chciałbym wskazać dwie kluczowe zasady rachunku lambda, które tworzą samą koncepcję programowania funkcyjnego:

  1. W rachunku lambda wszystkie funkcje mogą być anonimowe, ponieważ jedyną znaczącą częścią nagłówka funkcji jest lista argumentów.
  2. Po wywołaniu wszystkie funkcje przechodzą proces curryingu. Jest to następujące: jeśli funkcja zostanie wywołana z wieloma argumentami, to na początku zostanie wykonana tylko z pierwszym argumentem i zwróci nową funkcję zawierającą 1 argument mniej, która zostanie natychmiast wywołana. Ten proces jest rekurencyjny i trwa do momentu zastosowania wszystkich argumentów, zwracając wynik końcowy. Ponieważ funkcje są czyste, to działa.

Jak powiedziałem, rachunek lambda na tym się nie kończy - ale omówiliśmy tylko kluczowe aspekty związane z FP. Teraz, w rozmowie o programowaniu funkcjonalnym, możesz sflashować słowo „rachunek lambda”, a wszyscy pomyślą, że grzebiesz 🙂

Wniosek

Programowanie funkcjonalne jest prawdziwym obciążeniem dla mózgu - ale jest to bardzo potężne podejście i wierzę, że jego popularność będzie tylko rosła.

Jeśli chcesz dowiedzieć się więcej o programowaniu funkcjonalnym, to radzimy zapoznać się z przykładami wykorzystania zasad FP w JavaScript ( , ), a także tym poświęconym funkcjonalnemu C#.