Type. Type adalah himpunan nilai dan sekumpulan operator yang terdefinisi terhadap type tersebut

dokumen-dokumen yang mirip
ANALISA KASUS Ekspresi Kondisional

FUNGSI. {deretan instruksi algoritmik : pemberian harga, input, output, analisa kasus, pengulangan)

Abstract Data Type (ADT)

Pemrograman Prosedural FUNGSI (Subprogram) Tim Pengajar KU1071 Sem

Dasar Komputer dan Pemrograman. Konsep Tipe Data dan Operator Nama dan Nilai Data

TYPE. Inggriani Liem : Catatan Kuliah Algoritma & Pemrograman, Jurusan teknik Informatika - ITB TYPE.doc/TYPE- 21/08/03 16:04

PDP 08 Dasar Pemrograman 2010

Algoritma dan Pemrograman. Oleh: Eddy Prasetyo N

Overview Analisis Rekurens

Tipe Rekursif: POHON (TREE)

Pemrograman Fungsional FAJAR SAPTONO, ST

Aturan Penulisan Algoritma Setiap Algoritma akan selalu terdiri dari tiga bagian yaitu : Judul (Header) Kamus Algoritma

Pertemuan Ke-3 (Tipe Data dan Nama) Rahmady Liyantanto. S1 Teknik Informatika-Unijoyo

Algoritma Pemrograman

SEQUENCE. Program SEQ1 { Contoh penulisan sequence per baris } Program SEQ2 { Contoh penulisan sequence dengan tanda titik koma}

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

Type Rekursif : List LIST OF LIST

STRUKTUR DATA. Pengajar. Jaidan Jauhari, M.T. Alamat

Tipe Data, Nama, Nilai. Chapter 4

Algoritma dan Pemrograman. Oleh: Eddy Prasetyo N

FUNGSI MINGGU KE: 4 TUJUAN: Mahasiswa dapat memahami definisi fungsi. Mahasiswa dapat mendefinisikan fungsi. Mahasiswa dapat menggunakan fungsi.

Algoritma Pemrograman

Algoritma Pemrograman

Algoritma Pemrograman

Fungsi Linier & Grafik Fungsi Aplikasi dalam Ekonomi

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

HARGA & EKSPRESI Input dan Output

LATIHAN UTS Tim Pengajar KU1071 Sem

TIPE, NAMA, DAN NILAI

DIKTAT KULIAH. DASAR PEMROGRAMAN Bagian : Pemrograman Fungsional. Oleh : Inggriani Liem. Kelompok Keahlian Data & Rekayasa Perangkat Lunak

PEMILIHAN. Runtunan. Dian Palupi Rini, M.Kom

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Paradigma Functional BAHASA PEMROGRAMAN. TIM PENGAJAR PEMROGRAMAN Departemen Ilmu Komputer IPB

Brigida Arie Minartiningtyas, M.Kom

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

D I K T A T L I S P Oleh : Sri Purwanti

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

Teknik Percabangan. Brigida Arie Minartiningtyas, M.Kom

Tipe Data dan Operator dalam Pemrograman

Pemrograman Prosedural PENDAHULUAN. Tim Pengajar KU1071 Sem

PUTERA BATAM LOGIKA INFORMATIKA DAN ALGORITMA DAFTAR ISI. BAB IV : PEMILIHAN A. Pengertian

Algoritma dan Struktur Data I Mia Fitriawati, S.Kom, M.Kom

Algoritma Pemrograman

Nama, Tipe, Ekspresi, dan Nilai

Algoritma Pemrograman

5 F U N G S I. 1 Matematika Ekonomi

Pendahuluan. Kuadran I (X>0, Y>0) Kuadran II (X<0, Y>0) Kuadran IV (X>0, Y<0) Kuadran III (X<0, Y<0)

Rekursif. Rekursif adalah salah satu metode dalam dunia matematika dimana definisi sebuah fungsi mengandung fungsi itu sendiri.

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

Algoritma dan Struktur Data

CCH1A4 / Dasar Algoritma & Pemrogramanan

STRUKTUR DASAR PEMROGRAMAN

Tinjau algoritma dibawah ini

Struktur Program. Rinta Kridalukmana

Algoritma Pemrograman

PENGANTAR KOMPUTER & SOFTWARE I REPRESENTASI DATA

FUNGSI DASAR PEMROGRAMAN

Pembahasan Kuis. KU1071/Pengantar Teknologi Informasi A Sem /2011

PENGANTAR KOMPUTER & SOFTWARE I REPRESENTASI DATA

Pertemuan Ke-2 (Teks Algoritma) Rahmady Liyantanto. S1 Teknik Informatika-Unijoyo

P A S C A L D A S A R

Variabel, Tipe Data, dan Operator. Oleh : Edi Sugiarto, S.Kom, M.Kom

MODUL DUA VARIABEL DAN TIPE VARIABEL

1. Integer Interger adalah data numerik yang tidak mengandung pecahan, dan disajikan dalam memori komputer sebagai angka bulat. Mengacu pada obyek

JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

.::BAB II.::MENGENAL PASCAL

Fungsi. Nisa ul Hafidhoh

[Type the company name] [Type the document title] [Type the document subtitle] Gilang Abdul Aziz [Pick the date]

Prosedur dan Fungsi. Kenapa Prosedur atau Fungsi?

(Borland Delphi 7.0) BAB II. D3 Teknik Informatika FMIPA UNS Sakroni. Materi Pembahasan : Komentar Variabel Konstanta Operator Tipe Data Konversi Data

2 ATURAN PENULISAN TEKS ALGORITMA

Soal hari Selasa (13/10) Latihan 7 AN

Definisi Percabangan

BAB XI MENGGUNAKAN FUNGSI DALAM EXCEL

sama dengan p q. Perhatikan tabel berikut. p q B B S S B S S B S S B B S S S B B S B S S S S B B S B B

Fungsi. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Teori Algoritma. Algoritma Perulangan

Prosedur dan Fungsi ALGORITMA DAN PEMROGRAMAN [IS ] Dosen: Yudha Saintika, S.T., M.T.I

CCH1A4 / Dasar Algoritma & Pemrogramanan

Teori Algoritma. Struktur Algoritma

Algoritma dan Struktur Data

MA5031 Analisis Real Lanjut Semester I, Tahun 2015/2016. Hendra Gunawan

LIST LINIER 1. DEFINISI

Tipe data dasar merupakan tipe data yang disediakan oleh kompailer, sehingga dapat langsung dipakai Dalam algoritma dan pemrograman yang termasuk dala

Materi. Tipe, Variabel dan Operator Algoritma Pemrograman PENULISAN ALGORITMA PENULISAN ALGORITMA 15/03/2010 NAMA DAN EKSPRESI

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen

Tipe Data dan Operator. Ekohariadi FT Unesa

ELLIPTIC CURVE CRYPTOGRAPHY. Disarikan oleh: Dinisfu Sya ban ( )

Algoritma Pemrograman

Brigida Arie Minartiningtyas, M.Kom

StrukturDasarProgram Prosedural (dalambahasac++)

Lecturer: Abdusy Syarif. Undergraduate Course Informatics Engineering Dept. Universitas Mercu Buana. Tipe Data

F U N G S I A. PENGERTIAN DAN UNSUR-UNSUR FUNGSI

REPRESENTASI DATA. Arsitektur Komputer

BAB-2 : TIPE DATA, VARIABEL DAN OPERATOR

SILABUS MATAKULIAH. Indikator Pokok Bahasan/Materi Aktifitas Pembelajaran

Algoritma dan Pemrograman. Pertemuan Ke-4 Konsep Tipe Data, Operator Dan Identifier

Variabel dan Tipe data Javascript

Transkripsi:

Type Bentukan

Tujuan Mahasiswa mampu memahami definisi type bentukan Berdasarkan definisi yang dipahami, mahasiswa mampu membuat program yang memanfaatkan type bentukan Mahasiswa mampu mengimplementasikan type bentukan dalam LISP melalui praktikum

Type Type adalah himpunan nilai dan sekumpulan operator yang terdefinisi terhadap type tersebut Dalam konteks fungsional: operator dijabarkan dalam bentuk fungsi Jenis-jenis type: Type dasar sudah tersedia: integer, real, character, boolean Type bentukan dibuat sendiri

Type Bentukan Himpunan nilai: ditentukan oleh domain nilai komponennya bisa type dasar, bisa type bentukan Menyatakan nilai type bentukan: dalam bentuk tuple. Contoh: nilai suatu Point didefinisikan oleh tuple <x:integer, y:integer>, misal: <0,0> Operator: harus dibuat definisi, spesifikasi, dan realisasinya sendiri tergantung pada operasi yang berlaku pada type bentukan

Type Bentukan Beberapa jenis type bentukan: Type yang memberikan nama baru type lain/ membatasi domain type lain Contoh: type bilbulat : integer memberi nama baru type IntPos : integer > 0 membatasi domain Type yang terdiri atas komponen-komponen bertype lain Contoh: Type bentukan tanpa nama type Point : <x : integer, y : integer> Contoh: range dari fungsi HHMMDD (diktat hlm. 44) HHMMDD: integer[0..99999] <integer 0, integer[0..23], 2 integer[0..59]>

Mendefinisikan Type Dalam konteks fungsional mendefinisikan type adalah mendefinisikan: Nama dan struktur type (komponen-komponennya) Selektor untuk mengakses komponen-komponen type Konstruktor untuk membentuk type Predikat untuk menentukan karakteristik dan pemeriksaan besaran Fungsi-fungsi lain yang didefinisikan untuk type tersebut

Type Point Diktat hlm. 37-38 Definisi type Point Definisi dan spesifikasi Selektor Definisi dan spesifikasi Konstruktor Definisi, spesifikasi, realisasi Predikat Contoh: IsOrigin? Definisi, spesifikasi, realisasi Fungsi Lain Contoh: Jarak; Jarak0; Kuadran

TYPE POINT DEFINISI TYPE type point: <x: real, y: real> {<x,y> adalah sebuah point, dengan x adalah absis, y adalah ordinat} DEFINISI DAN SPESIFIKASI SELEKTOR Absis: point real {Absis(P) memberikan absis Point P} Ordinat: point real {Ordinat(P) memberikan ordinat Point P} DEFINISI DAN SPESIFIKASI KONSTRUKTOR MakePoint: 2 real point {MakePoint(a,b) membentuk sebuah point dari a dan b dengan a sebagai absis dan b sebagai ordinat} DEFINISI DAN SPESIFIKASI PREDIKAT IsOrigin?: point boolean {IsOrigin? (P) benar jika P adalah titik origin yaitu titik <0,0>}

DEFINISI OPERATOR/FUNGSI LAIN TERHADAP POINT Jarak: 2 point real {Jarak(P1,P2): menghitung jarak antara 2 point P1 dan P2} Jarak0: point real {Jarak0(P1) menghitung jarak titik terhadap titik pusat koordinat (0,0)} Kuadran: point integer[1..4] {Kuadran(P) menghitung mana kuadran dimana titik tersebut terletak. Syarat P bukan titik origin dan bukan terletak pada sumbu X dan bukan terletak pada sumbu Y} {Fungsi antara yang dipakai: FX2 adalah pangkat dua yang pernah didefinisikan pada least square dan SQRT(X) adalah fungsi dasar untuk menghitung akar}

REALISASI IsOrigin?(x,y): x=0 and y=0 IsOrigin?(P): Absis(P)=0 and Ordinat(P)=0 Jarak 2 titik= ((x 1 -x 2 ) 2 + (y 1 -y 2 ) 2 ) Jarak(P1,P2): SQRT ( FX2 (Absis(P1) Absis(P2)) + FX2 (Ordinat(P1) Ordinat(P2)) ) Jarak dgn titik 0 = (x 2 + y 2 ) Jarak0(P): SQRT ( FX2 (Absis(P1)) + FX2 (Ordinat(P1)) ) Kuadran(P): depend on Absis(P), Ordinat(P): Absis(P) > 0 and Ordinat(P) > 0: 1 Absis(P) < 0 and Ordinat(P) > 0: 2 Absis(P) < 0 and Ordinat(P) < 0: 3 Absis(P) > 0 and Ordinat(P) > 0: 4 Kuadran(x,y): depend on x,y: x > 0 and y > 0: 1 x < 0 and y > 0: 2 x < 0 and y < 0: 3 x > 0 and y > 0: 4

Type Pecahan Diktat hlm. 38-39 Definisi type Pecahan Definisi dan spesifikasi Selektor Definisi dan spesifikasi Konstruktor Definisi, spesifikasi, realisasi Predikat Contoh: IsEqP?; IsLtP? Definisi, spesifikasi, realisasi Fungsi Lain Contoh: AddP; DivP

TYPE PECAHAN DEFINISI DAN SPESIFIKASI TYPE type pecahan: <n: integer >= 0, d: integer > 0> {<n:integer >= 0, d:integer > 0 > n adalah pembilang (numerator) dan d adalah penyebut (denumerator). Penyebut sebuah pecahan tidak boleh nol} DEFINISI DAN SPESIFIKASI SELEKTOR Pemb: pecahan integer >= 0 {Pemb(p) memberikan numerator pembilang n dari pecahan tsb} Peny: pecahan integer > 0 {Peny(p) memberikan denumerator penyebut d dari pecahan tsb} DEFINISI DAN SPESIFIKASI KONSTRUKTOR MakeP: integer >=0, integer > 0 pecahan {MakeP(x,y) membentuk sebuah pecahan dari pembilang x dan penyebut y dengan x dan y integer}

DEFINISI DAN SPESIFIKASI OPERATOR TERHADAP PECAHAN {Operator Aritmatika Pecahan} AddP: 2 pecahan pecahan {AddP(P1,P2): menambahkan dua buah pecahan P1 dan P2: n1/d1 + n2/d2 = (n1*d2 + n2*d1) / (d1*d2)} SubP: 2 pecahan pecahan {SubP(P1,P2): mengurangkan dua buah pecahan P1 dan P2: n1/d1 - n2/d2 = (n1*d2 - n2*d1) / (d1*d2)} MulP: 2 pecahan pecahan {MulP(P1,P2): mengalikan dua buah pecahan P1 dan P2: (n1/d1) * (n2/d2) = (n1*n2) / (d1*d2)} DivP: 2 pecahan pecahan {DivP(P1,P2): membagi dua buah pecahan P1 dan P2: (n1/d1) / (n2/d2) = (n1*d2) / (d1*n2)} RealP: pecahan real {Menuliskan bilangan pecahan dalam notasi desimal}

DEFINISI DAN SPESIFIKASI PREDIKAT {Operator relasional Pecahan} IsEqP?: 2 pecahan boolean {IsEqP?(P1,P2) true jika P1=P2 membandingkan 2 pecahan sama nilainya n1/d1 = n2/d2 jika dan hanya jika n1*d2 = n2*d1} IsLtP?: 2 pecahan boolean {IsLtP?(P1,P2) true jika P1<P2 membandingkan 2 pecahan, apakah P1 < P2: n1/d1 < n2/d2 jika dan hanya jika n1*d2 < n2*d1} IsGtP?: 2 pecahan boolean {IsGtP?(P1,P2) true jika P1>P2 membandingkan 2 pecahan, apakah P1 > P2: n1/d1 > n2/d2 jika dan hanya jika n1*d2 > n2*d1}

REALISASI AddP(n1,d1,n2,d2): n-baru= (n1*d2 + n2*d1) d-baru= (d1*d2) AddP(P1,P2): MakeP( (Pemb(P1)*Peny(P2) + Pemb(P2)*Peny(P1)), (Peny(P1)*Peny(P2)) Constructor untuk membuat) Pecahan baru sebagai hasil pertambahan Penyebut baru SubP(P1,P2): MakeP( (Pemb(P1)*Peny(P2) - Pemb(P2)*Peny(P1)), (Peny(P1)*Peny(P2)) ) MulP(P1,P2): MakeP( (Pemb(P1)*Pemb(P2)), (Peny(P1)*Peny(P2)) ) DivP(P1,P2): MakeP( (Pemb(P1)*Peny(P2)), (Peny(P1)*Pemb(P2)) ) Pembilang baru

REALISASI RealP(P): Pemb(P)/Peny(P) IsEqP?(P1,P2): Pemb(P1)*Peny(P2) = Peny(P1) * Pemb(P2) IsLtP?(P1,P2): Pemb(P1)*Peny(P2) < Peny(P1) * Pemb(P2) IsGtP?(P1,P2): Pemb(P1)*Peny(P2) > Peny(P1) * Pemb(P2)

Type Date Diktat hlm. 40-43 Definisi type Date Penggunaan type bentukan lain Definisi dan spesifikasi Selektor Definisi dan spesifikasi Konstruktor Definisi, spesifikasi, realisasi Predikat Contoh: IsBefore? (versi dengan let dan tanpa let) Definisi, spesifikasi, realisasi Fungsi Lain Contoh: Nextday

TYPE DATE DEFINISI DAN SPESIFIKASI TYPE type Hr: integer [1..31] {definisi ini hanyalah untuk menamakan type integer dgn nilai tertentu supaya mewakili hari, shg jika dipunyai suatu nilai integer, kita dapat memeriksa apakah nilai integer tersebut mewakili Hari yg absah} type Bln: integer [1..12] {definisi ini hanyalah untuk menamakan type integer dgn nilai tertentu supaya mewakili bulan} type Thn: integer > 0 {definisi ini hanyalah untuk menamakan type integer dgn nilai tertentu supaya mewakili tahun} type date <d: Hr, m: Bln, y: Thn> {<d,m,y> adalah tanggal d bulan m tahun y} DEFINISI DAN SPESIFIKASI SELEKTOR Day: date Hr {Day(D) memberikan hari d dari D yang terdiri dari <d,m,y>} Month: date Bln {Month(D) memberikan bulan m dari D yang terdiri dari <d,m,y>} Year: date Thn {Year(D) memberikan tahun y dari D yang terdiri dari <d,m,y>}

DEFINISI DAN SPESIFIKASI KONSTRUKTOR MakeDate: <Hr,Bln,Thn> date {MakeDate<(h,b,t)> membentuk tanggal pada hari, bulan, tahun tertentu} DEFINISI DAN SPESIFIKASI OPERATOR TERHADAP DATE NextDate: date date {NextDate(D): menghitung date yg merupakan keesokan hari dari date D yg diberikan, misal Nextday(<30,4,80>) adalah <1,5,80>} Yesterday: date date {Yesterday(D): menghitung date yg merupakan 1 hari sebelum date D yg diberikan, misal Yesterday(<1,3,80>) adalah <29,2,80>} NextNDay: date, integer date {NextNDay(D): menghitung date yg merupakan hari N dari date D yg diberikan, misal NextNday(<30,4,80>,3) adalah <3,5,80>} HariKe1900: date integer[0..366] {HariKe1900(D): menghitung jumlah hari terhadap 1 Januari pada tahun y dengan memperhitungkan apakah y adalah tahun kabisat atau bukan}

DEFINISI DAN SPESIFIKASI PREDIKAT IsEqD?: 2 date boolean {IsEqD?(D1,D2) true jika D1=D2 yaitu d1=d2, m1=m2 dan y1=y2} IsBefore?: 2 date boolean {IsBefore?(D1,D2) true jika D1 adalah sebelum D2} IsAfter?: 2 date boolean {IsAfter?(D1,D2) true jika D1 adalah sesudah D2} IsKabisat?: Thn boolean {IsKabisat?(a) true jika tahun a adalah tahun kabisat: habis dibagi 4 tetapi tidak habis dibagi 100 atau habis dibagi 400}

REALISASI {hanya sebagian, sisanya silakan dibuat sebagai latihan} IsBefore?(D1,D2): periksa tahunnya, jika sama maka periksa bulannya, jika sama maka periksa tanggalnya IsBefore?(D1,D2): Let J1=Day(D1), M1=Month(D1), T1=Year(D1), J2=Day(D2), M2=Month(D2), T2=Year(D2) in if T1 T2 then T1 < T2 else if M1 M2 then M1 < M2 else J1 < J2 {Versi lain (Tanpa Let)} IsBefore?(D1,D2): if Year(D1) Year(D2) then Year(D1) < Year(D2) else if Month(D1) Month(D2) then Month(D1) < Month(D2) else Day(D1) < Day(D2)

REALISASI IsEqD?(D1,D2): (Year(D1) = Year(D2)) and (HariKe1900(D1) = HariKe1900(D2)) IsBefore?(D1,D2): if (Year(D1) = Year(D2)) then HariKe1900(D1) < HariKe1900(D2) else Year(D1) < Year(D2) IsAfter?(D1,D2): if (Year(D1) = Year(D2)) then HariKe1900(D1) > HariKe1900(D2) else Year(D1) > Year(D2) IsKabisat?(a): ((a mod 4 = 0) and (a mod 100 0)) or (a div 400 = 0)

Type Bentukan digunakan dalam Type Bentukan Lain Contoh: Type Garis Suatu Garis terdiri atas 2 buah Point type Point : < x : real, y : real > { <x,y> adalah sebuah point/titik, dengan x adalah absis dan y adalah ordinat } type Garis : < PAw : Point, PAkh : Point > { <PAw, PAkh> adalah sebuah garis dengan PAw adalah titik awal garis dan PAkh adalah titik akhir garis }

Type Bentukan tanpa nama Fungsi dapat mengembalikan range type bentukan tanpa nama Contoh: EkivalensiDetik (diktat hlm. 44) Versi dengan let dan fungsi antara Versi dengan kalkulasi tanpa let dan fungsi antara, koreksi diktat: HHMMDD (x): < x div 86400, (x mod 86400) div 3600, ((x mod 86400) mod 3600) div 60, ((x mod 86400) mod 3600) mod 60 >

Translasi ke LISP

Definisi type Dalam LISP, tuple nilai suatu type bentukan dinyatakan dalam bentuk list Contoh: nilai Point <-1,3> dinyatakan sebagai: (-1 3) Karena list adalah salah satu symbol dasar dalam LISP, tidak ada realisasi definisi type Definisi type: Dinyatakan secara eksplisit dalam bentuk komentar ; Definisi Type ; type Point : < x : real, y : real > ; <x,y> adalah sebuah point, dengan x adalah absis ; dan y adalah ordinat}

Selektor Definisi dan spesifikasi selektor diberikan dalam bentuk komentar Selektor direalisasikan sebagai fungsi untuk mengakses komponen-komponen list ; Definisi dan spesifikasi selektor ; Absis : Point -> real ; Absis(P) memberikan absis dari point P ; Ordinat : Point -> real ; Ordinat(P) memberikan ordinat dari point P ; Realisasi Selektor (defun Absis (P) (car P)) (defun Ordinat (P) (car (cdr P)))

Konstruktor Definisi dan spesifikasi diberikan dalam bentuk komentar Konstruktor direalisasikan sebagai fungsi untuk membentuk suatu list ; Definisi dan spesifikasi konstruktor ; MakePoint : 2 real -> Point ; MakePoint(a,b) membentuk sebuah Point dari a ; dan b dengan a sebagai absis dan b sebagai ; ordinat ; Realisasi Konstruktor (defun MakePoint (a b) (list a b))

Predikat Definisi dan spesifikasi tuliskan dalam bentuk komentar Realisasi: sebagai fungsi yang menghasilkan nilai boolean ; Definisi dan spesifikasi Predikat ; IsOrigin? : Point -> boolean ; IsOrigin?(P) benar jika P adalah titik origin ; yaitu <0,0> ; Realisasi Predikat IsOrigin? (defun IsOrigin? (P) (and (= (Absis P) 0) (= (Ordinat P) 0) ) )

Fungsi Lain Definisi dan spesifikasi tuliskan dalam bentuk komentar ; Definisi dan spesifikasi Fungsi Lain ; Kuadran : Point -> integer[1..4] ; Kuadran (P) menghitung kuadran di mana suatu ; point terletak. ; Prekondisi: P bukan di titik origin dan bukan ; terletak pada sumbu x dan sumbu y ; Realisasi Fungsi Kuadran (defun Kuadran (P) (cond ((and (> (Absis P) 0) (> (Ordinat P) 0)) 1) ((and (< (Absis P) 0) (> (Ordinat P) 0)) 2) ((and (> (Absis P) 0) (< (Ordinat P) 0)) 3) ((and (< (Absis P) 0) (< (Ordinat P) 0)) 4) ) )

Aplikasi Type Bentukan Suatu ekspresi dapat di-assign suatu nilai type bentukan dengan menggunakan setq (setq P1 (MakePoint -3 1)) (-3 1) (Absis P1) -3 (Ordinat P1) 1 (IsOrigin? P1) NIL (Kuadran P1) 2

Type bentukan tanpa nama Fungsi yang menghasilkan range type bentukan tanpa nama direalisasikan sebagai fungsi yang menghasilkan list (defun HHMMDD (x) (list (div x 86400) (div (rem x 86400) 3600) (div (rem (rem x 86400) 3600) 60) (rem (rem (rem x 86400) 3600) 60) ) )

Type bentukan tanpa nama Contoh: Aplikasi fungsi HHMMDD dari program EkivalensiDetik (diktat hlm.44) (HHMMDD 86400) (1 0 0 0) (HHMMDD 43200) (0 12 0 0)

Latihan Soal

Latihan Soal 1 Didefinisikan type bentukan Point seperti pada diktat hlm. 37-38 Dalam notasi fungsional: Buatlah definisi, spesifikasi, realisasi dari predikat Translasi yang menerima masukan sebuah Point (misalnya P) dan 2 buah angka real (misalnya dx dan dy) dan menghasilkan Point hasil translasi P sejauh dx pada arah sumbu x dan dy pada arah sumbu y Contoh: Diketahui P1 = <0,1> Translasi (P1, 2, -2) menghasilkan <2,-1>

Latihan Soal 2 Diketahui definisi dan spesifikasi fungsi KuadranPrePostTranslasi sbb: KuadranPrePostTranslasi : Point, 2 real -> <integer, integer> { KuadranPrePostTranslasi(P, dx, dy) menghasilkan tuple <K1, K2>. K1 adalah kuadran P, sedangkan K2 adalah kuadran P setelah ditranslasi sejauh dx searah sumbu x dan dy searah sumbu y. } Buatlah realisasinya dalam notasi fungsional. Hint: Gunakan fungsi antara.

Latihan Soal 3 Realisasi fungsi Yesterday dari type bentukan Date pada diktat hlm. 43 masih mengandung kesalahan. Buatlah realisasi fungsi Yesterday versi Anda sendiri.

Tugas di Rumah Translasikan latihan soal hari ini dalam notasi LISP Modul Pra-Praktikum Bagian Fungsional F-01. ADT POINT F-02. ADT PECAHAN F-03. ADT DATE 2009/8/26 IF2030/Sem. 1 2009-2010 38

Tugas di Rumah Untuk dipikirkan: JAM adalah salah satu type bentukan yang digunakan dalam banyak kasus Contoh: 14:20 (jam 14 menit 20) 14:20:30 (jam 14 menit 20 detik 30) 2:20:30 PM (= 14:20:30) Bagaimana membuat type JAM yang memiliki komponen jam, menit, detik? Bagaimana batasan domain nilai tiap komponen JAM? Operator apa saja yang mungkin berlaku terhadap JAM?