Anda di halaman 1dari 19

ALGORITMA

DAN
STRUKTUR DATA

Abstract Data Type

Tri Afirianto, S.T., M.T. | tri.afirianto@ub.ac.id


FILKOM | UB
Pengantar
• Bagaimana cara mengatasi masalah implementasi program dengan
komputer?
• Pemahaman masalah secara menyeluruh dan persiapan data
• Keputusan operasi-operasi yang dilakukan terhadap data
• Penyimpanan data-data pada memori sehingga tersimpan dan terstruktur
secara logis, operasinya efisien
• Pengambilan keputusan terhadap bahasa pemrograman mana yang paling
cocok untuk jenis data yang ada
Perbedaan Tipe Data, Obyek Data, dan Struktur Data

• Tipe Data
• Jenis data yang mampu ditangani oleh suatu bahasa pemrograman pada
komputer

• Setiap bahasa pemrograman memiliki tipe data yang memungkinkan:


• Deklarasi terhadap variabel tipe data tersebut
• Menyediakan kumpulan operasi yang mungkin terhadap variabel bertipe data tersebut
• Jenis obyek data yang mungkin
• Contoh tipe data di C? Java? Pascal? .NET?
Perbedaan Tipe Data, Obyek Data, dan Struktur Data (lanj)

• Obyek Data
• Kumpulan elemen yang mungkin untuk suatu tipe data tertentu
• Integer mengacu pada obyek data -32768 s/d 32767
• Byte : 0 s/d 255
• String : kumpulan karakter maks 255 huruf

• Struktur Data
• Cara penyimpanan dan pengorganisasian data-data pada memori komputer
maupun fail secara efektif sehingga dapat digunakan secara efisien, termasuk
operasi-operasi di dalamnya
Aktivitas Struktur Data
• Di dalam struktur data kita berhubungan dengan 2 aktivitas:
• Mendeskripsikan kumpulan obyek data yang sah sesuai dengan tipe data
yang ada
• Menunjukkan mekanisme kerja operasi-operasinya

• Mis: integer (-32768 s/d 32767) dan jenis operasi yang diperbolehkan adalah
+, -, *, /, mod, ceil, floor, <, >, !=, dsb

• Struktur data = obyek data + [operasi manipulasi data]


Hubungan SD dan Algoritme
• Dengan pemilihan struktur data yang baik, maka problem yang
kompleks dapat diselesaikan sehingga algoritme dapat digunakan
secara efisien, operasi-operasi penting dapat dieksekusi dengan
sumber daya yang lebih kecil, memori lebih kecil, dan waktu
eksekusi yang lebih cepat

• Tidak semua struktur data baik dan sesuai. Contoh untuk problem
pemrosesan image, record informasi mahasiswa
Jenis Struktur Data
• Linear
• Kumpulan komponen-komponen yang tersusun membentuk satu garis linear,
menempel dan melintasi satu demi satu
• Array, Linked list, Stack, Queue

• Non-Linear
• Menggambarkan hubungan yang bersifat hirarkis (hubungan one to many
atau many to many) antara elemen-elemen, tidak dapat melintasi dalam
sekali jalan
• Tree, Graph
ADT dan UDT atau Tipe Data Bentukan
• Bahasa pemrograman dapat memiliki tipe data:
• Built-in : sudah tersedia oleh bahasa pemrograman tersebut
• Tidak berorientasi pada persoalan yang dihadapi
• UDT : User Defined Type, dibuat oleh pemrogram
• Mendekati penyelesaian persoalan yang dihadapi
• Contoh: record pada Pascal, struct pada C
• ADT : Abstract Data Type
• Memperluas konsep UDT dengan menambahkan pengkapsulan atau enkapsulasi, berisi
sifat-sifat dan operasi-operasi yang dapat dilakukan terhadap kelas tersebut
• Contoh: class pada Java
Abstract Data Type (ADT)
• Spesifikasi dari sekumpulan data termasuk operasi yang dapat
dilakukan pada data tersebut (Wikipedia)

• Sekumpulan data dan operasi terhadap data tersebut yang


definisinya tidak bergantung pada implementasi tertentu
(www.nist.gov/dads)
Interface
• Spesifikasi ADT biasa disebut sebagai interface

• Interface menyatakan apa yang dapat dilihat dan digunakan oleh


programmer

• Dalam Java, hal tersebut dinyatakan sebagai public method

• Operasi-operasi yang dapat dilakukan pada ADT dituliskan dalam


interface dan dinyatakan public
Pemisahan Interface dengan Implementasi
• Pengguna dari sebuah ADT hanya perlu memikirkan dan
mempelajari interface yang diberikan tanpa perlu mengetahui
banyak bagaimana implementasi dilakukan (prinsip: enkapsulasi)
• Implementasi dapat saja berubah namun interface tetap
• Dengan kata lain, implementasi dari sebuah ADT dapat saja berbeda-
beda namun selama masih mengikuti interface yang diberikan maka
program yang menggunakan ADT tersebut tidak akan terpengaruh
Struktur Data = Container
• Sebuah struktur data dapat dipandang sebagai
tempat penyimpanan benda (container)
• Beberapa hal yang dapat dilakukan:
• Menaruh benda
• Mengambil benda
• Mencari benda tertentu
• Mengosongkannya (atau periksa apakah kosong)
Container

Contoh
ContohInterface
Interface struktur
strukturdata
data::
void
void add(Benda
add(Benda x);
x);
void
void remove(Benda x);
remove(Benda x);
Benda
Benda access(Benda x);
access(Benda x);
void
void makeEmpty();
makeEmpty();
Data boolean
boolean isEmpty();
isEmpty();
ADT: List

Indeks 1 2 3 4

• List adalah kumpulan benda yang mana setiap benda memiliki posisi
• Setiap benda dalam List dapat diakses melalui indeksnya
• Contoh paling mudah: array
Contoh
ContohInterface
Interface list
list::
void
void insert(int
insert(int indeks,
indeks, Benda
Benda x);
x);
void
void append(Benda
append(Benda x);
x);
void
void remove(int
remove(int indeks);
indeks);
void
void remove(Benda
remove(Benda x);
x);
Benda get(int indeks);
Benda get(int indeks);
ADT: Stack
push pop,top • Stack adalah kumpulan benda yang mana
hanya benda yang most recently inserted dapat
diakses
Most
• Bayangkan tumpukan Koran
recent • Benda yang paling terakhir ditambahkan ditaruh
di atas tumpukan (top)

Contoh
ContohInterface
Interface stack
stack::
Least
recent void
void push(Benda
push(Benda x);
x);
Benda
Benda pop();
pop();
Benda
Benda top();
top();
ADT: Queue

enqueue dequeue
getFront

Most recent Least recent

• Queue adalah kumpulan benda yang mana hanya benda yang least recently
inserted dapat diakses
• Bayangkan antrian printer job pada jaringan
• Benda yang paling awal ditambahkan berada di depan antrian (front)

Contoh
ContohInterface
Interface queue
queue::
void
void enqueue(Benda
enqueue(Benda x);
x);
Benda
Benda dequeue();
dequeue();
Benda
Benda getFront();
getFront();
ADT: Set

tambah

• Set adalah struktur data yang tidak mengijinkan duplikasi data


• Bandingkan dengan struktur data lain yang mengijinkan kita menyimpan dua data
yang sama
• Bayangkan peserta kuliah ini: Setiap peserta unik, tidak ada yang terdaftar dua
kali
Contoh
ContohInterface
Interface set
set::
void
void add(Benda
add(Benda x);
x);
void
void remove(Benda
remove(Benda x);
x);
boolean
boolean isMember(Benda
isMember(Benda x);
x);
ADT: Map
Nama: Abdul Betty Chairul Dian

Nilai:

• Map adalah struktur data yang berisi sekumpulan pasangan nama (keys) dan
nilai (values) dari nama tersebut
• Nama (keys) harus unik, tapi nilai (values) tidak
• Bayangkan basis-data yang berisi informasi peserta kuliah. Apa yang menjadi
“nama” (keys)?
Contoh
ContohInterface
Interfacesebuah
sebuahMap
Map::
void
void put(Kunci
put(Kunci id,
id, Nilai
Nilai x);
x);
void
void remove(Kunci
remove(Kunci id);
id);
Nilai
Nilai get(Kunci
get(Kunci id);
id);
ADT: Priority Queue
insert deleteMin
findMin

Highest
priority
• Priority Queue adalah struktur data queue yang tiap elemen data dapat miliki nilai
prioritas. Data dengan nilai prioritas tertinggilah yang dapat diakses terlebih dulu
• Bayangkan sebuah antrian pada printer jaringan. Misalkan ada sebuah permintaan
cetak untuk 100 halaman hanya beberapa detik lebih awal dari permintaan cetak 1
halaman
Contoh
ContohInterface
Interfacesebuah
sebuahPriority
PriorityQueue
Queue::
void
void insert(Benda
insert(Benda x);
x); (Menambahkan)
(Menambahkan)
void
void deleteMin();
deleteMin(); (menghapus)
(menghapus)
Benda
Benda findMin();
findMin(); (meng-akses)
(meng-akses)
PERTANYAAN???

Anda mungkin juga menyukai