Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

If412 06

610 views

Published on

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

If412 06

  1. 1. IF412 – Konsep Bahasa Pemrograman Pertemuan : 06 ALOKASI STORAGE PADA LISP • Proses pada LISP berdasarkan list, di mana unsur-unsur dari list berbentuk : Tail Head Contoh: 1. ( to be or not to be) to be or not to be 2. (( to 2) (be 2) ( or not)) to 2 be 2 or not CONS • Memerlukan alokasi storage • Yang dilakukan oleh (cons A D) jika ditulis dalam Pascal adalah : new (L); ⇒ artinya : membentuk elemen List baru L^.head := A; ⇒ pointer head di-assign ke data baru L^.tail := D; ⇒ pointer tail di-assign ke list yang sudah ada D be or not to be L to be or not be to • Sublist dapat di-shared, contoh : (set ’L ’(or not to be)) (set ’M ’(to be)) (set ’N (cons (cadr M) L)) (set ’O (cons (car M) N)) BINA NUSANTARA Edisi : 1 Revisi : 1 Sept - 1998
  2. 2. IF412 – Konsep Bahasa Pemrograman Pertemuan : 06 N N to be or not to be N O • Struktur List dapat dimodifikasi, dan hanya ada dua macam perubahan, yaitu : o mengubah bagian head ⇒ rplaca o mengubah bagian tail ⇒ rplaed Dalam Pascal yang dilakukan oleh : o (rplaca L A) adalah L^.head := A; o (rplaed L A) adalah L^.tail := A; Contoh : (set ’text ’(to be or not to be)) (set ’x (cdr text) (rplaed x ’(is all)) text (edr text) to be or not to be is all SCOPING • Static scoping atau lexical scoping • Dynamic scoping Contoh : (defun roots-aux (d) (list (quotient (plus (minus b) d) (times 2 a)) (quotient (difference (minus b) d) BINA NUSANTARA Edisi : 1 Revisi : 1 Sept - 1998
  3. 3. IF412 – Konsep Bahasa Pemrograman Pertemuan : 06 (times 2 a)) )) (defun roots (a b c) (roots-aux (exp (difference (exp b 2) (times 4 a c)) 0.5)) ) • a, b tidak secara eksplisit dipass ke roots-aux, karena menggunakan dynamic scoping • Apabila menggunakan static scoping, maka a, b harus dipass secara eksplisit o Untuk melihat lebih jelas perbedaan static dan dynamic scoping dapat dilihat pada bahasa imperative (Pascal) di bawah ini : Program x; var m : integer; procedure P; begin m := 1; end; procedure Q; var m : integer; begin P; end; o Lisp pada umumnya menggunakan dynamic scoping, dan Common Lisp menggunakan static scoping. o Dynamic scoping membuat func-tional argument lebih rumit. PROPERTY LIST • (set ’DS ’((Don Smith) 45 30.000 (25 Agustus 1980))) • Perhatikan list di atas, jika ingin mencari : o last name : (cadar DS) o tahun mulai kerja : (caddadddr DS) ⇒ susah • Solusi : Dengan memberikan indikator pa-da setiap informasi ⇒ disebut dengan property list. Contoh : (set ’DS ’(nama (Don Smith) umur 45 gaji 30.000 tgl_kerja (25 Agustus 1980))) • Bentuk umum property list : (P1 V1 P2 V2 ....... Pn Vn) urutan tidak penting • Fungsi-fungsi yang dapat digunakan : o get : (get ’DS ’umur) ⇒ mengem-balikan nilai dari sifat tertentu 45 o setf : (setf (get ’DS ’umur) 50) ⇒ mengganti nilai sifat tertentu50 Association List • Property list dipakai apabila hanya ada satu harga untuk setiap property. BINA NUSANTARA Edisi : 1 Revisi : 1 Sept - 1998
  4. 4. IF412 – Konsep Bahasa Pemrograman Pertemuan : 06 • Apabila ada kemungkinan property tidak mempunyai harga atau property mempunyai beberapa harga ⇒ property list tidak dapat dipakai ⇒ digunakan Association List. • Bentuk umum : ((a1 v1) (a2 v2) ..........(an vn)) ⇒ urutan tidak penting • Contoh : (set ’DS ’((nama (Don Smith)) (umur 45) (gaji 30.000) (tgl_kerja (25 Agustus 1980))) • Fungsi fungsi yang dapat digunakan : o (assoc ’gaji DS) ⇒ (gaji 30.000) o (rassoc 45 DS) ⇒ umur BINA NUSANTARA Edisi : 1 Revisi : 1 Sept - 1998

×