bab 6
DESCRIPTION
Bab 6. Predikat Lisp. 6.5.Predikat. Predikat – prosedur yang mengembalikan nilai sama ada BENAR atau PALSU Terdapat beberapa jenis predikat: Predikat Kesamaan Predikat Keahlian Predikat Jenis Data Predikat Senarai-kosong Predikat Nombor. 6.5.1. Predikat Kesamaan. - PowerPoint PPT PresentationTRANSCRIPT
1
Bab 6
Predikat Lisp
2
6.5. Predikat Predikat – prosedur yang mengembalikan nilai sama
ada BENAR atau PALSU Terdapat beberapa jenis predikat:
Predikat Kesamaan Predikat Keahlian Predikat Jenis Data Predikat Senarai-kosong Predikat Nombor
3
6.5.1. Predikat Kesamaan Terdapat 4 predikat kesamaan:
EQUAL – adakah kedua-dua argumen ungkapan (senarai atau atom) yang sama ?
EQL – adakah kedua-dua argumen simbol atau nombor yang sama?
EQ – adakah kedua-dua argumen simbol yang sama?
= - adakah kedua-dua argumen nombor yang sama?
4
6.5.1. Predikat Kesamaan - Contoh> setf abc-list ‘(a b c) one 1 two 2 plus ‘+ minus
‘-)> (equal abc-list ‘(a b c))T> (equal one 2)NIL> (equal abc-list one)NIL> (equal plus minus)NIL> (eql plus ‘+)T> (eq minus –1)ERROR> (= 4 4.0)T
5
6.5.2. Predikat Keahlian Predikat keahlian (MEMBER) menguji sama ada argumen pertama
adalah unsur (paras teratas) bagi argumen kedua Hanya boleh menguji sekiranya argumen pertama adalah berbentuk
simbolik MEMBER mengembalikan senarai yang tinggal selepas padanan
dijumpai Contoh:
> (MEMBER ‘MOTHER ‘(tell me about your mother please)(MOTHER PLEASE)> (MEMBER ‘MOTHER ‘((FATHER SON) (MOTHER DAUGHTER)))NIL
6
6.5.3. Predikat Jenis Data Menyemak jenis data dalam ungkapan:
ATOM – adakah unsur sejenis atom?NUMBERP – adakah unsur sejenis nombor?SYMBOLP – adakah unsur sejenis simbol?LISTP – adakah unsur sejenis senarai?
Contoh:eval> (atom ‘pi)Teval> (symbolp pi)NIL
7
6.5.4. Predikat Senarai-Kosong Menyemak sama ada senarai adalah kosong Dua predikat yang boleh digunakan:
NULL – Adakah argumen suatu senarai kosong? ENDP – Adakah argumen (senarai) suatu senarai kosong?
Contoh:> (null ())T> (endp nil)T> (null ‘(a b c))NIL
8
6.5.5. Predikat Nombor Menyemak nombor dalam ungkapan:
NUMBERP – Adakah argumen suatu nombor?ZEROP – Adakah argumen suatu sifar?PLUSP – Adakah argumen nombor positif?MINUSP – Adakah argumen nombor negatif?EVENP – Adakah argumen nombor genap?ODDP – Adakah argumen nombor ganjil?> - Adakah nombor dalam susunan menurun?< - Adakah nombor dalam susunan menaik?
9
6.5.5. Predikat Nombor - Contoh
> (setf zero 0 one 1 two 2 three 3 four 4). . .> (setf digits (list one two three four)). . .> (numberp 4)T> (numberp four)T> (numberp ‘four)NIL> (evenp (* 9 5 3 2 1))T> (> four two)T
10
6.6. Gabungan Predikat Predikat boleh digabungkan menggunakan:
ANDORNOT
11
6.6.1. Gabungan Predikat - AND Gabungan predikat menggunakan AND mengembalikan:
NIL sekiranya sebarang argumennya dinilai sebagai NIL (argumen dinilai dari kiri-ke-kanan dan menggunakan konsep ‘litar-pintas’),
Argumen terakhir sekiranya kesemua argumen tidak bernilai NIL
Bilangan argumen yang boleh digunakan tidak terhad Contoh:
> (setf pets ‘(dog cat)). . .> (and (member ‘dog pets) (member ‘tiger pets))NIL> (and (member ‘dog pets) (member ‘cat pets))(CAT)
12
6.6.2. Gabungan Predikat - OR Gabungan predikat menggunakan OR mengembalikan:
NIL sekiranya kesemua argumennya dinilai sebagai NIL, Nilai bukan-NIL yang dijumpai
Bilangan argumen yang boleh digunakan tidak terhad Contoh:
> (setf pets ‘(dog cat)). . .> (or (member ‘dingo pets) (member ‘tiger pets))NIL> (or (member ‘dog pets) (member ‘cat pets))(DOG CAT)
13
6.6.3. Gabungan Predikat - NOT NOT menukarkan:
Bukan-NIL kepada NIL, NIL kepada T (benar)
Contoh:> (not ‘(dog))NIL> (setf pets ‘(dog cat))(DOG CAT)> (not (member ‘dog pets))NIL> (not (member ‘tiger pets))T
14
6.7. Primitif Percabangan Terdapat 5 jenis percabangan:
IFWHENUNLESSCONDCASE
15
6.7.1. Percabangan IF Sintaks percabangan IF:
(IF <test> <then form> <else from>) IF mengembalikan nilai <then form> sekiranya nilai <test>
adalah T(benar) atau sebarang nilai selain dari NIL IF mengembalikan nilai <else form> sekiranya nilai <test>
adalah NIL Contoh:
> (setf day-or-date ‘Monday). . .> (if (symbolp day-or-date) ‘day ‘date)DAY> (setf day-or-date 9). . .> (if (symbolp day-or-date) ‘day ‘date)DATE
16
6.7.2. Percabangan WHEN Sintaks percabangan WHEN:
(WHEN <test> <then form>) WHEN mengembalikan nilai <then form> sekiranya nilai <test>
adalah sebarang nilai selain dari NIL Contoh:
> (when t ‘its-true)ITS-TRUE> (when NIL ‘its-true)NIL> (setf high 98 temperature 102). . .> (when (> temperature high) (setf high temperature))
102> high102
17
6.7.3. Percabangan UNLESS Sintaks percabangan UNLESS:
(UNLESS <test> <else form>) UNLESS mengembalikan nilai <else form> sekiranya nilai <test>
adalah NIL UNLESS mengembalikan NIL sekiranya nilai <test> adalah sebarang
nilai bukan-NIL Contoh:
> (unless NIL ‘its-false)ITS-FALSE> (unless T ‘its-false)NIL> (setf high 98 temperature 102). . .> (unless (< temperature high) (setf high temperature))102> high102
18
6.7.4. Percabangan COND Sintaks percabangan COND:
(COND (<test 1> <consequent 1-1> <consequent 1-2> ..) (<test 2> <consequent 2-1> <consequent 2-2> ..) .. (<test m> <consequent m-1> <consequent m-2> ..))
Klausa dalam ungkapan COND dinilai satu demi satu sehingga suatu nilai bukan-NIL dijumpai
Contoh:> (cond ((= N 0) (setf answer ‘(value is zero)))
((> N 1) (setf answer ‘(value is positive)))(T (setf answer ‘(value is negative))))
19
6.7.5. Percabangan CASE Sintaks:
(CASE <key form>(<key 1> <consequent 1-1> <consequent 1-2> . . )(<key 2> <consequent 2-1> <consequent 2-2> . . ). . .(<key m> <consequent m-1> <consequent m-2> . . )
Contoh:> (setf thing ‘point r l). . .> (case thing
(circle (* pi r))(sphere (* 4 pi r r))(otherwise 0))
0