bab 6

19
1 Bab 6 Predikat Lisp

Upload: sana

Post on 04-Feb-2016

61 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Bab 6

1

Bab 6

Predikat Lisp

Page 2: Bab 6

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

Page 3: Bab 6

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?

Page 4: Bab 6

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

Page 5: Bab 6

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

Page 6: Bab 6

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

Page 7: Bab 6

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

Page 8: Bab 6

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?

Page 9: Bab 6

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

Page 10: Bab 6

10

6.6. Gabungan Predikat Predikat boleh digabungkan menggunakan:

ANDORNOT

Page 11: Bab 6

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)

Page 12: Bab 6

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)

Page 13: Bab 6

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

Page 14: Bab 6

14

6.7. Primitif Percabangan Terdapat 5 jenis percabangan:

IFWHENUNLESSCONDCASE

Page 15: Bab 6

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

Page 16: Bab 6

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

Page 17: Bab 6

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

Page 18: Bab 6

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))))

Page 19: Bab 6

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