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