Liczbowe funkcje rekurencyjne wielu zmiennych – uczymy się na błędach

Prezentujemy implementację funkcji rekurencyjnych wielu zmiennych w języku F# oraz sposób wyświetlania wartości tych funkcji. W artykule omówione są funkcje rekurencyjne liczbowo-liczbowe i pokazany jest sposób, w jaki można wykrywać defekty funkcji rekurencyjnych.

Języki programowania takie jak Java, C++, Python są językami, które wykonują sekwencje zadań zdefiniowane jawnie przez programistę.  Język F# jest językiem funkcyjnym. Programowanie funkcyjne działa inaczej niż programowanie sekwencyjne, ponieważ aplikacje tego typu nie wykonują zadań sekwencyjnie, tylko wyznaczają jedynie wartości poszczególnych wyrażeń. Programy funkcyjne składają się głównie z funkcji, które są ich podstawowymi elementami. Główna funkcja składa się tylko i wyłącznie z innych funkcji, które z kolei składają się z jeszcze innych funkcji, a ta cecha daje możliwość tworzenia funkcji złożonych. Takie podejście jest czysto matematyczne – funkcje przyjmują pewną liczbę zmiennych i zwracają wynik (stąd pomysł na wykorzystanie języka F# w artykule).

 

Analogicznie jak w innych językach programowania, w F# można pisać programy przepisując po prostu założenia. Jednak nie wszystkie programy funkcyjne mogą powstać tylko za pomocą przepisania założeń. Takie podejście, w którym założenia przepisywane są w postaci kodu, nie jest efektywne w dużej liczbie przypadków. Efektywny program może być trudniejszy do napisania i nie zawsze jest tak przejrzysty jak jego nieefektywny odpowiednik. W przypadku programowania funkcyjnego nie powstają takie problemy jak kolejność wykonywania instrukcji, zmiana wartości zmiennej w nieoczekiwany sposób, co poprawia czytelność programów, ułatwia ich weryfikację i jest pewnego rodzaju ułatwieniem. Projektowanie funkcji rekurencyjnych wielu zmiennych nie jest jednak rzeczą trywialną. Łatwo można popełnić błąd podczas ich implementacji, co zostanie pokazane w artykule.

 

Pobierz pełen artykuł  >>

 

Marek Żukowicz jest absolwentem matematyki na Uniwersytecie Rzeszowskim. Obecnie pracuje jako tester. Jego zainteresowania skupiają się wokół testowania, matematyki, zastosowania algorytmów ewolucyjnych oraz zastosowania matematyki w procesie testowania. Interesuje się również muzyką, grą na akordeonach oraz na perkusji.

 

Od redakcji:

 

Jeśli chcesz podzielić się swoją wiedzą z innymi testerami, czekamy na Twój artykuł, film, komentarz, pracę dyplomową czy inną formę treści, jaką chcesz opublikować na naszych łamach.

 

 

 


 

 

Najbliższe terminy szkoleń

Partnerzy

Narzędzia testerskie