Strona główna » Poradniki » Maxima » Własna biblioteka
 

Własna biblioteka

Wstęp

Typowy użytkownik programu Maxima będzie korzystał jedynie z wbudowanych program funkcji. Ewentualnie może pobrać dodatkową bibliotekę, aby uzyskać dostęp do szeregu przydatnych funkcji. Jednak każdy kto jest chętny, aby takiego rodzaju bibliotekę przygotować samemu to zapraszam do przeczytania artykułu. Jest to krótki wstęp dotyczący definiowania nowych funkcji i dystrybucji ich w postaci pojedynczego pliku.

Rozszerzenie pliku

Wszystkie funkcje, które zostaną zapisane zaleca się zapisać w pliku o rozszerzeniu *.max. Nie potrzeba żadnego specjalnego oporogramowania. Wystarczy tego rodzaju plik otworzyć w edytorze tekstu.

Tego rodzaju plik można załadować do programu np. poleceniem batch(). Wtedy wszystkie funkcje znajdujące się w pliku zostaną zinterpretowane i wczytane.

W takiej bibliotece mogą się znaleźć funkcje o nazwach wcześniej zdefiniowanych. Jednak po wczytaniu będzie dostępna jedynie ostatnia wczytana wersja funkcji, więc należy bardzo ostrożnie wybierać nazwy funkcji.

Tworzenie pliku

Deklarowanie funkcji

W celu zadeklarowania funkcji wystarczy kolejno podać: nazwę funkcji, argumenty w nawiasach okrągłych, operator deklaracji ':=', a następnie w nowych nawiasach okrągłych zapisać kolejne operacje wykonywane przez funkcję.

Przykładowo w celu napisania funkcji sumującej dwie liczby można napisać:

  1. sumuj(a, b):=(
  2.   a + b
  3. )$

Zadeklarowana została nowa funkcja sumuj, która przyjmuje dwa argumenty a i b. Zwracanym wynikiem jest a + b. Jak można zauważyć zapis jest identyczny z tym, który wprowadza się do programu.

Funkcja bez parametrów

Funkcję tę można napisać w inny sposób. Argumenty można wczytać dopiero po wywołaniu funkcji, więc nie istnieje potrzeba wtedy podawania jakichkolwiek argumentów. Tego typu rozwiązanie może się okazać wygodniejsze podczas pisania niektórych funkcji.

W celu komunikacji z użytownikiem można użyć funkcji print(), aby wypisać komunikat na ekran oraz read(), aby wyczytać żądaną wartość. W funkcji read() można wpisać tekst, który zostanie wyświetlony przed wczytaniem wartości.

W przypadku funkcji, która składa się z więcej niż jednej linijki należy użyć przecinka ',' jako seperatora poleceń. Poniżej został przedstawiony przykładowy kod funkcji sumowanie(), która nie przyjmuje jakichkolwiek argumentów:

  1. sumowanie():=(
  2.   print("Skrypt sumujacy dwie liczby"),
  3.   a: read("a = "),
  4.   b: read("b = "),
  5.   a + b
  6. )$

(1.) Deklaracja funkcji oraz (2.) przedstawienie jak działa skrypt. Następnie (3. - 4.) wczytywane są wartości a i b do zmiennych o odpowiednich nazwach. Ostatnia linijka (5.) zwraca sumę wczytanych liczb.

Komentarze

W tego rodzaju pliku (jak również w każdym innym pliku wczytywanym przez Maxime) można umieścić własne komentarze. Może się to okazać bardzo ważne, aby pamiętać jak dana funkcja działa, albo umieścić notkę, że dana funkcją można rozszerzyć o pewną funkcjonalność.

Zapis komentarzy jest bardzo podobny z C++. Wszystko co zostanie zapisane w komentarzu jest ignorowane przez Maxime.

  1. /* treść komentarza */

Testowanie funkcji

W celu przetestowanie napisanej biblioteki zlokalizujmy ją na dysku i zapamiętajmy ścieżkę dostępu. W programie Maxima następnie należy wpisać polecenie batch() i jako argument podać ściężkę dostępu. Od tej chwili można korzystać z napisanych funkcji.

Zadania

Zadanie 1

Napisz własną bibliotekę o nazwie 'operacje'. Następnie napisz funkcję mnoz(), która będzie mnożyła trzy liczby przekazywane jako argumenty. Dopisz funkcję mnozenie() o podobnym działaniu, ale która wczytuje dane po wywołaniu funkcji. Przetestuj napisane funkcje.