LIST CLISP PROGRAMMING

 LIST  ELEMEN  SEDERHANA
 
LIST merupakan sekumpulan elemen list yang bertype sama. Jadi list adalah koleksi objek dan nilai satu elemen boleh muncul lebih dari satu kali.
Elemen List dapat berupa :
ü   Elemen yang mempunyai type sederhana (integer, karakter, …)
ü   Elemen yang mempunyai type komposisi
ü   List (rekursif )
 
List kosong merupakan list yang tidak mempunyai elemen, ditulis sebagai [ ] atau (). Dua buah list disebut sama jika semua elemen list sama urutan dan nilai nya.
Contoh List :
()                       : merupakan list kosong
(5 4 3 2 1)        : merupakan list integer
(a b c d e)        : merupakan lsit karakter
(list (x y z))      : merupakan list dalam list
 
Function List   
Dalam sebuah List juga terdapat functions yang digunakan untuk memanipulasi program LIST pada CLISP.
Beberapa Function dalam penulisan LIST :
·                car x --> mnghasilkan elemen pertama dari list
·                null x --> mngecek list kosong atau tidak
·                reverse x --> membalikkan urutan elemen list
·                length x ---> mnghitung jmlah list
·                cons elemen x ---> menambahkan elemen pertama dr sbuah list
·                equal x y ---> mncocokan 2 buah LIST (dg elemen dr list lain)
·                append x y -=-> mnggabungkan 2 buah list
Contoh Function List :
§  Sebuah konstruktor yang digunakan untuk menambahkan elemen pertama pada LIST.  Dengan menggunakan cons.
(defun konso (e L) (cons e L))
§  Mencari elemen pertama sebuah list.
(defun firstEl(L)
(car L))
§  Dua buah list disebut sama jika semua elemen list sama urutan dan nilai nya.
(defun IsEqual (L1 L2)
(equal L1 L2) )
Aplikasi :
(IsEqual ‘(1 2 3 4) ‘(1 2 3 4))
T
§  menghitung banyaknya List dalam 1 element dengan menggunakan recuren.
Contoh :
(defun NbElmnt(L) (cond ((isempty L) 0) ;basis 0
                        (t (+ (NbElmnt (cdr L)) 1)) ;reccuren
 LIST of CHARACTER
List adalah sekumpulan elemen yg bertipe sama, disebut juga sequence atau series.
Teks atau Character adalah list yang elemennya terdiri dari karakter. Karakter adalah himpunan terhingga dari ‘a’..’z’, ‘A..’Z’, ‘0..9’.
·      List yang menghasilkan  sebuah  list  dari  e dan  Te,  dengan  e sebagai  elemen  pertama  e menggunakan konstruktor cons.
 
Realisasi LISP :
(defun konso (e te)
(cons e te))
·         Sebuah type konstruktor yang menghasilkan  sebuah  list  dari  Te dan  e,  dengan  e sebagai  elemen  terakhir  teks dengan menggunakan fungsi reverse (pembalikan list).

Realisasi LISP :
(defun kons (te e)
 (reverse (cons e (reverse te))))
·         FirstElmt(L)  Menghasilkan  character  pertama  Teks  Te dengan fungsi selector car.

Realisasi lisp :
(defun firstchar (te)
 (car te))
·         Tail(Te)  : Menghasilkan  list  tanpa  elemen  pertama  Teks  Te dengan menggunakan fungsi selector cdr.

Realisasi LISP :
(defun tail (te)
(cdr te))
·         LastElmt(T)  : Menghasilkan  character  terakhir  Teks  T dengan menggunakan fungsi selector car dan konstruktor reverse.

Realisasi LISP :
(defun lastElmt (te)
                (car (reverse te)))
·         Head(T)  : Menghasilkan  list tidak kosong  tanpa  elemen  terakhir  Teks  T dengan menggunakan fungsi selector car dan konstruktor reverse.

Realisasi LISP :
(defun head (te)
          (reverse (cdr (reverse te))))
·         IsEmpty(T)  merupakan fungsi predikat yang menghasilkan Boolean benar  jika  list  kosong.
 
Realisasi LISP :
(defun isempty (te)
          (null te))
·         IsOneElmt  (X,T)  adalah fungsi prosedur yang menghasilkan indicator boolean  benar  jika  teks  hanya  mempunyai  satu  karakter dengan menggunakan fungsi rekursif.
 
Realisasi LISP :
(defun IsOneElmt (te)
          (and (not (isempty te)) (isempty (cdr te))))
·         Nba(T) merupakan fungsi predikat yang menghasilkan  banyaknya  kemunculan  ‘a’  dalam  teks  T dengan menggunakan fungsi rekursif hasil berupa teks integer > 0.
 
Realisasi LISP :
(defun nba (te)
(if (isempty te) 0
(+ (if (equal (firstchar te) "a") 1 0) (nba (tail te)))))
·         nbx  : character,  Teks  →  integer
nbx(C,T) merupakan fungsi predikat  menghitung  banyaknya  kemunculan  karakter  C  pada  teks  T, dengan menggunakan fungsi rekursif hasil berupa teks integer.
 
Realisasi LISP :
(defun nbx (c te)
(if (isempty te) 0
(if (equal (lastchar te) c) (+ 1 (nbx c (head te))) (nbx c (head te)))))
·         Atleast  (N,C,T)  benar,  jika  karakter  C minimal  muncul  N kali  pada  Teks  T.
Hasil dari list ini berupa fungsi Boolean.
 
Realisasi LISP :
(defun atleast (n c te)
(if (>= (nbx c te) n) t nil))
·         IsPalindrome(T) menghasilkan fungsi Boolean yang benar  jika  teks  T dibaca  dari  kiri  ke kanan,  hasilnya sama  dengan  jika dibaca  dari  kanan  ke kiri .
 
Realisasi LISP :
(defun ispalindrom (te)

          (equal te (reverse te)))

0 Comments


EmoticonEmoticon