Abstract Data Type (ADT)

dokumen-dokumen yang mirip
STRUKTUR DATA. Pengajar. Jaidan Jauhari, M.T. Alamat

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

Struktur Data. Bagian 1 : Struktur Data Dasar. Program Studi Teknik Informatika Institut Teknologi Bandung. Oleh : Inggriani Liem

DIG1G3 Implementasi Struktur Data

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

Algoritma dan Pemrograman. Oleh: Eddy Prasetyo N

Draft Diktat Struktur Data

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

MATRIKS. Dapat disimpan secara linier dan kontigu dengan dua alternatif sebagai berikut : a. Per baris

CCH1A4 / Dasar Algoritma & Pemrogramanan

Algoritma Pemrograman

PDP 08 Dasar Pemrograman 2010

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

Pengantar Struktur Data

Struktur Program. Rinta Kridalukmana

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

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan)

Algoritma Pemrograman

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

Algoritma Pemrograman

Algoritma Pemrograman

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Mesin Abstrak

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Queue (Antrian)

{ Kamus Umum } constant IdxMax : integer = 100 constant IdxMin : integer = 1 constant IdxUndef : integer = -999 { indeks tak terdefinisi}

Algoritma dan Pemrograman. Oleh: Eddy Prasetyo N

CCH1A4 / Dasar Algoritma & Pemrogramanan

Catatan Kuliah PAM 282 STRUKTUR DATA

IKG2A3/ Pemrograman Terstruktur 2

STRUKTUR DASAR PEMROGRAMAN

Kode MK/ Pemrograman Terstruktur 2

HARGA & EKSPRESI Input dan Output

Sub Program : Prosedur. Tim Pengajar KU1071 PTI A Semester I 2009/2010

CCH1A4 / Dasar Algoritma & Pemrogramanan

CCH1A4 / Dasar Algoritma & Pemrogramanan

Pemrograman Prosedural FUNGSI (Subprogram) Tim Pengajar KU1071 Sem

2 ATURAN PENULISAN TEKS ALGORITMA

Pemrograman Prosedural PENDAHULUAN. Tim Pengajar KU1071 Sem

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Variasi List Linier

Pendahuluan Struktur Data STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 1 : 20 Juni 2016

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

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Tree (Pohon)

CCH1A4 / Dasar Algoritma & Pemrogramanan

IKG2I4 / Software Project I

Representasi Logic List Linier

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

Subprogram (dalam Bahasa C++ + Flowchart)

Nama, Tipe, Ekspresi, dan Nilai

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Dasar Pemrograman. Nisa ul Hafidhoh

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

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

StrukturDasarProgram Prosedural (dalambahasac++)

Notasi Algoritmik. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

CCH1A4 / Dasar Algoritma & Pemrogramanan

/*ini komentar 1 baris*/ // ini koemtar 1 baris int /*ini komentar sisipan*/a; /* ini adalah komentar 2 baris */

LIST LINIER 1. DEFINISI

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

Universitas Komputer Indonesia

LATIHAN UTS Tim Pengajar KU1071 Sem

PROSEDUR. Jadi, setiap prosedur harus : - Didefinisikan (dibuat spesifikasinya) dan dituliskan kode programnya - Dipanggil, pada saat eksekusi

SILABUS MATAKULIAH. Indikator Pokok Bahasan/Materi Strategi Pembelajaran

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Brigida Arie Minartiningtyas, M.Kom

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

RENCANA PEMBELAJARAN SEMESTER (RPS)

CCH1A4 / Dasar Algoritma & Pemrogramanan

CCH1A4 / Dasar Algoritma & Pemrogramanan

FUNGSI DAN PROCEDURE

Instalasi Code::Blocks, Tipe Data, Variabel, Konstanta, Operator, Input-Output dan Flowchart

Tipe Data, Nama, Nilai. Chapter 4

Tipe bentukan dan pointer selanjutnya akan kita pelajari pada modul pemrograman 1 (akhir semester).

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

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

Soal hari Selasa (13/10) Latihan 7 AN

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

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut

Mesin Karakter dan Mesin Kata

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

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

TIPE, NAMA, DAN NILAI

FUNGSI DASAR PEMROGRAMAN

QUEUE Antrian 1. DEFINISI

Algoritma dan Pemrograman Array/Tabel[1] Oleh: Eddy Prasetyo N

TIPE DATA, VARIABLE, dan OPERATOR DELPHI

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

MATRIKS P E N G E N A L A N P R O G R A M S T U D I. Institut Teknologi Sumatera

JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

Prosedur. Nisa ul Hafidhoh

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

Algoritma Pemrograman

Algoritma Perulangan. Kuliah algoritma dan pemrograman

CCH1A4 / Dasar Algoritma & Pemrogramanan

Fungsi. Nisa ul Hafidhoh

DATA KOMPUTASI & SISTEM BILANGAN

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Transkripsi:

IKG2A3/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Abstract Data Type (ADT) 1 8/25/2015

Pendahuluan Pada bab ini kita akan membahas tentang Abstract Data Type (ADT) Mendefinisikan sebuah struktur data, berarti kita harus mendefinisikan ADT 2 8/25/2015

ADT ADT adalah definisi TYPE dan sekumpulan PRIMITIF (operasi dasar) terhadap TYPE tersebut. Definisi type dari sebuah ADT dapat mengandung sebuah definisi ADT lain,misalnya: ADT Waktu yang terdiri dari ADT JAM dan ADT DATE GARIS yang terdiri dari dua buah POINT SEGI4 yang terdiri dari pasangan dua buah POINT (Top, Left) dan (Bottom,Right) 3 8/25/2015 Kode dan nama MK

Type diterjemahkan menjadi type terdefinisi dalam bahasa yang bersangkutan,misalnya menjadi record dalam bahasa Ada/Pascal atau struct dalam bahasa C. Primitif, dalam konteks prosedural, diterjemahkan menjadi fungsi atau prosedur. 4 8/25/2015

Pengelompokan Primitif Konstruktor/Kreator, pembentuk nilai type. Semua objek (variabel) bertype tsb harus melalui konstruktor.biasanya namanya diawali Make. Selektor, untuk mengakses komponen type (biasanya namanya diawali dengan Get) Prosedur pengubah nilai komponen (biasanya namanya diawali Get) Validator komponen type, yang dipakai untuk menguji apakah dapat membentuk type sesuai dengan batasan 5 8/25/2015

Pengelompokan Primitif (Lanjt) Destruktor/Dealokator, yaitu untuk menghancurkan nilai objek (sekaligus memori penyimpannya) Baca/Tulis, untuk interface dengan input/output device Operator relational, terhadap type tsb untuk mendefinisikan lebih besar, lebih kecil, sama dengan, dsb Aritmatika terhadap type tsb, karena biasanya aritmatika dalam bahasa pemrograman hanya terdefinisi untuk bilangan numerik Konversi dari type tersebut ke type dasar dan sebaliknya 6 8/25/2015

Implementasi ADT ADT biasanya diimplementasi menjadi dua buah modul, yaitu: Definisi/Spesifikasi Type dan primitif. Spesifikasi type sesuai dengan bahasa yang bersangkutan. Spesifikasi dari primitif sesuai dengan kaidah dalam konteks prosedural, yaitu: Fungsi : nama, domain, range dan prekondisi jika ada Prosedur : Initial State, Final State dan Proses yang dilakukan Body/realisasi dari primitif, berupa kode program dalam bahasa yang bersangkutan. 7 8/25/2015

Implementasi ADT driver : program utama yang dibuat khusus untuk men-test ADT tsb, yang minimal mengandung pemakaian (call) terhadap setiap fungsi dan prosedur 8 8/25/2015

Realisasi ADT dalam beberapa bahasa 9 8/25/2015

Modul ADT biasanya dimanfaatkan oleh modul lain, yang akan mendeklarasikan variabel bertype ADT tsb dalam modulnya. ADT bertindak sebagai Supplier (penyedia type dan primitif), Modul pengguna berperan sebagai Client (pengguna) dari ADT tsb. Biasanya ada sebuah pengguna yang khusus yang disebut sebagai main program (program utama) yang memanfaatkan langsung type tsb 10 8/25/2015

ADT JAM dalam Notasi Algoritmik { Definisi TYPE JAM <HH:MM:SS> } TYPE Hour : integer [0..23] TYPE Minute : integer [0..59] TYPE Second : integer [0..59] TYPE JAM : < HH: Hour, { Hour [0..23] } MM: Minute, { Minute [0..59] } SS:Second { Second [0..59] } > 11 8/25/2015

{**********************************************} { DEFINISI PRIMITIF } {**********************************************} { KELOMPOK VALIDASI TERHADAP TYPE } {**********************************************} function IsJValid (H,M,S:integer) boolean { Mengirim true jika H,M,S dapat membentuk J yang valid } {Konstruktor: Membentuk sebuah JAM dari komponen-komponennya } function MakeJam (HH:integer, MM:integer, SS:integer) JAM { Membentuk sebuah JAM dari komponen-komponennya yang valid } { Pre cond : HH,MM,SS valid untuk membentuk JAM } 12 8/25/2015

(** Operasi terhadap komponen : selekstor Get dan Set **) {** Selektor **} function Hour(J: JAM) integer { Mengirimkan bagian HH (Hour) dari JAM } function Minute(J: JAM) integer { Mengirimkan bagian Menit (MM) dari JAM } function Second (J: JAM) integer { Mengirimkan bagian Second(SS) dari JAM } 13 8/25/2015

{** Pengubah nilai Komponen **} procedure SetHH(Input/Output J: JAM, Input newhh : integer) {Menngubah nilai komponen HH dari J} procedure SetMM(Input/Output J: JAM, Input newmm : integer) {Mengubah nilai komponen MM dari J} procedure SetSS(Input/Output J: JAM, Input newss : integer) {Mengubah nilai komponen SS dari J} {** Destruktor ***} {* tidak perlu. Akan dijelaskan kemudian *} 14 8/25/2015

{**********************************************} { KELOMPOK BACA/TULIS } {**********************************************} procedure BacaJam (Input/Output J: JAM) { I.S. : J tidak terdefinisi } { F.S. : J terdefinisi dan merupakan jam yang valid } { Proses : mengulangi membaca komponen H,M,S sehingga membentuk J yang valid } procedure TulisJam (Input J: JAM) { I.S. : J sembarang } { F.S. : Nilai J ditulis dg format HH:MM:SS } { Proses : menulis nilai ke layar } 15 8/25/2015

{ KELOMPOK KONVERSI TERHADAP TYPE } {****************************************************} function JamToDetik (J: JAM) integer { Diberikan sebuah JAM, mengkonversi menjadi Detik } { Rumus : detik = 3600*hour+menit*60 + detik } { nilai maksimum = 3600*23+59*60+59*60 } { hati-hati dengan representasi integer pada bahasa implementasi } { kebanyakan sistem mengimplementasi integer, } {bernilai maksimum kurang dari nilai maksimum hasil konversi } function DetikToJam (N:integer) JAM { Mengirim konversi detik ke JAM } { pada beberapa bahasa, representasi integer tidak cukup untuk } { menampung N } 16 8/25/2015

{ KELOMPOK OPERASI TERHADAP TYPE } {***********************************************} {** Kelompok Operator Relational } function JEQ(J1: JAM, J2: JAM) boolean { Mengirimkan true jika J1=J2, false jika tidak } function JNEQ(J1: JAM, J2: JAM) boolean { Mengirimkan true jika J1 tidak sama dengan J2 } function JLT(J1: JAM, J2: JAM) boolean { Mengirimkan true jika J1<J2, false jika tidak } function JGT(J1: JAM, J2: JAM) boolean { Mengirimkan true jika J1>J2, false jika tidak} 17 8/25/2015

{******** Operator aritmatika JAM ******************} function JPlus(J1: JAM, J2: JAM) JAM { Menghasilkan J1+J2, dalam bentuk JAM } function JMinus(J1: JAM, J2: JAM) JAM { Menghasilkan J1-J2, dalam bentuk JAM } { Precond : J1<=J2 } function NextDetik (J: JAM) JAM { Mengirim 1 detik setelah J dalam bentuk JAM } function NextNDetik (J: JAM, N: integer) JAM { Mengirim N detik setelah J dalam bentuk JAM } 18 8/25/2015

ADT POINT dalam Notasi Algoritmik {Definisi ABSTRACT DATA TYPE POINT } TYPE POINT : < X: integer, { absis } Y: integer { ordinat} > { DEFINISI PROTOTIP PRIMITIF } {** Konstruktor membentuk POINT **} function MakePOINT (X:integer; Y:integer) POINT {Membentuk sebuah POINT dari komponen-komponennya} 19 8/25/2015

(** Operasi terhadap komponen : selekstor Get dan Set **) {** Selektor POINT **} function GetAbsis(P:POINT) integer {Mengirimkan komponen Absis dari P} function GetOrdinat (P:POINT) integer { Mengirimkan komponen Ordinat dari P POINT} (** Set nilai komponen **) procedure SetAbsis(Input/Output P:POINT, Input newx : integer) {Menngubah nilai komponen Absis dari P} procedure SetOrdinat (Input/Output P:POINT, Input newy : integer) { Mengubah nilai komponen Ordinat dari P } 20 8/25/2015

{*** KELOMPOK Interaksi dengan I/O device, BACA/TULIS ***} procedure BacaPOINT (Output P: POINT) { Makepoint(x,y,P) membentuk P dari x dan y yang dibaca } procedure TulisPOINT(Input P:POINT) { Nilai P ditulis ke layar dg format (X,Y} } 21 8/25/2015

{ Contoh ADT yang memanfaatkan ADT Lain} { Definisi : GARIS dibentuk oleh dua buah POINT } { *** ADT LAIN YANG DIPAKAI*****} USE POINT { ************* Definisi TYPE *************} TYPE GARIS : < PAw : POINT, { Titik Awal } PAkh : POINT { Titik Akhir} > 22 8/25/2015

{ ************** Definisi METHOD *****************} { DEFINISI PRIMITIF } {** Konstruktor membentuk GARIS ***} Procedure MakeGARIS (Input P1,P2:POINT, Output L:GARIS) {I.S. P1 dan P2 terdefinisi } {F.S. L terdefinisi dengan L.PAw= P1 dan L.Pakh=P2 } { Membentuk sebuah L dari komponen-komponennya } {** Selektor GARIS **} function GetPAw POINT {Mengirimkan komponen Titik pertama dari L GARIS} function GetPAkh POINT {Mengirimkan komponen Titik kedua dari L GARIS} 23 8/25/2015

Latihan Buatlah algoritma dari masing-masing primitive pada ADT jam Buatlah algoritma dari masing-masing primitive pada ADT Point Buatlah algoritma dari masing-masing primitive pada ADT Garis 24 8/25/2015

Referensi Diktat Kuliah IF2181 Struktur Data, Inggriani Liem, ITB, 2003. 25 8/25/2015

26 8/25/2015 THANK YOU