1. Scheme
Transkrypt
1. Scheme
1. Scheme 1.1. Typy danych jezyka Scheme , – – – – – – – Liczby calkowite 1, 2, 3 Liczby wymierne 1/2, 4/5 Liczby zespolone 4.0 + 5.0i Typ logiczny #t - prawda, #f - falsz Typ znakowy #\a Lańcuch znaków ”Witaj świecie” Symbole ’x 1.2. Listy 1.2.1. Definiowanie listy – (1 2 3 4) – ((1 2) 3 4) – (”Ala” 1 2) 1.2.2. Podstawowe operacje na listach – – – – (car ’(1 2 3 4)) => 1 (cdr ’(1 2 3 4)) => (2 3 4) (cons 1 ’()) => (1) (list 1 ’()) => (1 ()) 1.2.3. Predykaty – list? sprawdza czy argument jest lista, – null? sprawdza czy argument jest lista, pusta, 1.3. Komentarze Komentarze - zaczynaja, sie, od średnika ; 1.4. Wyrażenia i instrukcje 1.4.1. Wyrażenia arytmetyczne Scheme stosuje notacje, prefixowa., Oznacza to, że zapis wyrażenia 4 + 3 w notacji Scheme bedzie nastepuj acy (+ 4 3). Czyli zawsze bedzie zapisywany najpierw operator , , , , (funkcja), po którym bed a wyst epowa ly jego argumenty. , , , 1 2 1. Scheme 1.4.2. Instrukcja if (if wyrazenie zwracajace wartość logiczna, , ;jeśli wyrazenie zwraca prawde, wyrazenie1 ;jeśli wyrazenie zwraca falsz wyrazenie2 ) 1.4.3. Instrukcja cond (cond ((wyrazenie logiczne 1) wyrazenie1) ... ((wyrazenie logiczne 1) wyrazenien) (else wyrazenieE) ) 1.5. Definicje zmiennych i funkcji Definicja zmiennej globalnej (define zmienna wyrażenie) Definicja funkcji (define (nazwaFunkcji argumenty) cialo funkcji) 1.5.1. Wyrażenie lambda (lambda (parametry) wyrażenie) 1.5.2. Definicje zmiennych lokalnych (let ((zmienna1 wyrażenie1) (zmienna2 wyrażenie2)) wyrażenie-obliczane) 2. Prolog 2.1. Fakty i reguly 2.1.1. Fakty Fakty opisuja, obiekty (jakaś , relacje, obiektu), może to być relacja jedno lub wieloargumentowa. Interpretacja faktów jest zadaniem programisty. Zapisuje sie, je tak jak wywolanie funkcji w jezyku C++ i kończy znakiem kropki np. , – kobieta(magda). - co oznacza, że obiekt magda jest kobieta, – matka(ola, magda). - może to znaczyć, że magda jest matka, oli (lub odwrotnie wszystko zależy od interpretacji jaka, postawimy). 2.1.2. Koniunkcje Koniunkcje zapisuje sie, po to, żeby zaznaczyć, że musza, być spelnione wszystkie fakty (jest to po prostu iloczyn logiczny). Np. lubi(jan, wino), lubi(jan, jedzenie) – co oznacza że jan musi lubić zarówno wino jak i jedzenie. 2.1.3. Zapytania Wygladaj a, tak jak fakty, ale zaczynaja, sie, od ?-, pozwalaja, na sprawdzenie faktów, , jeśli prolog jest w stanie odnaleźć, spelniajace zapytanie cele wypisuje odnalezione fakty , ze slowem yes, natomiast jeśli nie może na podstawie umieszczonych w bazie danych (prologowej definiowanej przez programiste, za pomoca, faktów i regul) wypisuje no np. – ?- kobieta(magda) pozwoli sprawdzić, czy magda jest kobieta,, – ?- kobieta(X) odnajdzie wszystkie kobiety w bazie, kolejne cele sa, poszukiwane po średniku (;). 2.1.4. Reguly Używa sie, ich do zapisu, że fakt zależy od innych faktów, używa sie, ich także do zapisywania definicji. Np. lubi(piotr, X) :- wino(X) – pozwala zdefiniować fakt, że piotr lubi wszystkie wina 2.2. List, rekurencja – Listy w Prologu definiuje sie, w postaci p([1, 2, 3, 4]). – Glowe, i ogon pobiera sie, w sposób nastepuj acy p([X|Y]) X przyjmie wartość 1 nato, , miast Y [2, 3, 4] – Listy można laczyć za pomoca, reguly append , – Fakty i reguly można definiować rekurencyjnie – Zmienna to zmienna, która jest pomijana w obliczeniach. – Wyrażenia matematyczne oblicza sie, za pomoca, operatora is. 3