apohllo.pl
więcej niż strona domowa...
 

Lekcja 5

Spis treści | Lekcja 4 | Lekcja 6

5. Definiowanie Funkcji

Oto kilka przykładów funkcji:

5.1. ta funkcja pobiera dowolną liczbę argumentów

(+ 3 4 5 6)                 =>  18
(+ (+ 3 4) (+ (+ 4 5) 6))   =>  22

5.2. definiowanie funkcji

(defun foo (x y) (+ x y 5)) =>  FOO

5.3. wołanie stworzonej funkcji

(foo 5 0)                   =>  10

5.4. funkcja rekursywna

(defun silnia (x) 
  (if (> x 0)
    (* x (silnia (- x 1)))
    1
  ) 
)                           =>  SILNIA
(silnia 5)                  =>  120

5.5. funkcje wzajemnie rekursywne

(defun a (x) (if (= x 0) t (b (- x))))              =>  A
(defun b (x) (if (> x 0) (a (- x 1)) (a (+ x 1))))  =>  B
(a 5)                                               =>  T

5.6. funkcja o wielu instrukcjach – zwróci wartość, zwracaną przez jej ostatnią instrukcję

(defun bar (x) 
  (setq x (* x 3)) 
  (setq x (/ x 2)) 
  (+ x 4)
)                           =>  BAR
(bar 6)                     =>  13

W notacji EVAL używamy list, aby zdefiniować funkcje i odnosimy się do argumentów funkcji przez nadane im nazwy.

5.7. Funkcja AVERAGE jest zdefiniowana w notacji EVAL w ten sposób:

(defun average (x y)
  (/ (+ x y) 2.0)
)

Nazwa DEFUN pochodzi od define function. Jak wskazuje nazwa DEFUN używa się, by zdefiniować inne funkcje. Pierwszy wejście do DEFUN to imię funkcji zdefiniowanej. Drugi wejście jest listą argumentów, czyli nazwy, których funkcja użyje, by odnieść się do jego argumentów. Pozostała część wejścia do DEFUN definiuje ciało funkcji, a więc to, co jest wewnątrz pudełka.

5.8.

(defun square (n) (* n n))

Nazwa funkcji to SQUARE. Jego listą argumentów jest (N), czyli SQUARE przyjmuje jeden argument, do którego to odnosi się wartość N. Ciało funkcji jest wyrażeniem (* N N).

Pewne funkcje wymagają ustalonej liczby argumentów na wejściu, np: ODDP, który przyjmuje dokładnie jedno wejście i EQUAL, który bierze dokładnie dwa. Ale istnieje wiele funkcji przyjmujących zmienną liczbę wejść. Przykładowo – funkcje arytmetyczne +, -, * i /.

5.9.

(* 2 3 5)                   =>  30

Aby pomnożyć trzy liczby, funkcja * pomnaża najpierw pierwszy dwa, a następnie pomnaża do skutku kolejne przez wynik poprzedniego działania.

Spis treści | Lekcja 4 | Lekcja 6

lisp | Opublikowano 11:00 27-11-2010. Ostatnia modyfikacja 11:00 27-11-2010 |
comments powered by Disqus