1 / 19

Bab 6

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.

sana
Télécharger la présentation

Bab 6

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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) T eval> (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: • AND • OR • NOT

  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: • IF • WHEN • UNLESS • COND • CASE

  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 > high 102

  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 > high 102

  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

More Related