1, DESEMBER 2009
WAHJUDI
Abstrak- Tipe data abstrak(abstract data types atau disingkat ADT) adalah salah satu dasar pemrograman yang harus
dipahami oleh pemrogram. Untuk membangun sebuah tipe data abstrak, ada 5(lima) bagian yang perlu diperhatikan,
data abstrak berupa daftar terurut(sorted list, ordered list) pada tulisan ini, akan memperjelas batasan antar bagian
pada tipe data abstrak.
.DWDNXQFLWLSHGDWDDEVWUDNDEVWUDFWGDWDW\SHV$'7WLSHGDWDWHUXUXWVRUWHGOLVWRUGHUHGOLVW&
I.
LATAR BELAKANG
terdapat perbedaan teknik pemrograman antara penulis
satu dengan lainnya. Stack, Queue dan List serta beberapa
konsep lain dalam pemrograman menggunakan bahasa
C, bisa diimplementasikan dengan beberapa tehnik.
Diantaranya bisa dengan menggunakan tipe data semi
terstruktur, bisa juga dengan tipe data terstruktur yang
dibangun atas dasar tipe data abstrak.
Contohnya sebuah stack bisa diimplementasikan
menggunakan tipe data semi terstruktur, yaitu
menggunakan array dan beberapa variabel integer sebagai
penunjuk top of the stack . Karena menggunakan array,
maka pemrogram dimungkinkan untuk mencetak isi
stack bisa dimulai dari dasar stack, padahal prinsip stack
hanya mengijinkan akses data (push maupun pop) pada
posisi top. Stack bisa diimplementasikan menggunakan
struktur data yang sesuai dengan tipe data abstrak stack,
dimana pemrogram tidak diperkenankan mengakses isi
array tanpa melalui teknik yang benar.
Dari contoh stack diatas menunjukkan perlunya
pemahaman tipe data abstrak dan cara menggunakannya
pada pemrograman. Dengan contoh daftar terurut (sorted
list atau ordered list) diharapkan akan mempermudah
pemahaman dasar ilmu komputer tentang cara penerapan
Abstract Data Types (ADT).
II.
STRUKTUR DATA (DATA STRUCTURE) SEBAGAI DASAR TIPE DATA
ABSTRAK (ABSTRACT DATA TYPE)
Pemahaman tipe data abstrak dimulai dari pemahaman
24
WAHJUDI
int main() (
ratarata
var_b
Gambar 1. Ilustrasi tipe data
angka
huruf
III.
>
?
?
$@@& %$"'%
data types merupakan abstraksi matematis, tidak
B
E 2
implementasi operasi merupakan bagian terpisah.
3.a Contoh Abstract Data Type Daftar Terurut
Tipe Data Abstrak daftar terurut (sorted list) berisi
data mahasiswa dalam sebuah kelas. Data mahasiswa
terdiri dari NIM dan nama. Tentunya daftar terurut
25
WAHJUDI
Penjelasan Operasi
Membentuk sebuah daftar dengan ukuran tertentu, misalk
ukuran
Menambah sebuah data baru pada daftar xyz, mengembalik
status 1 jika berhasil dan 0 jika gagal
Mencari sebuah data dengan nilai key pada daftar xy
mengembalikan posisi record jika ditemukan, dan -1 jika tid
ditemukan
Menghitung jumlah data pada daftar xyz, mengembalikan jum
data
Mengembalikan jumlah data maksimal pada daftar xyz
Menghapus seluruh data pada daftar xyz
Mencetak seluruh data pada daftar xyz
Memeriksa apakah list dalam keadaan penuh atau tid
mengembalikan nilai 1 jika list penuh, mengembalikan 0 j
belum penuh
Memeriksa apakah list dalam keadaan kosong atau tid
mengembalikan nilai 1 jika list kosong, mengembalikan 0 j
tidak kosong
insert(xyz,baru)
search(xyz,key)
sizelist(xyz)
maxlist(xyz)
clearlist(xyz)
printlist(xyz)
isfull(xyz)
isempty(xyz)
0
E ?
?
$@@& %$"'%
2 E
operasi-operasi. Operasi yang disediakan dan termasuk didalamnya adalah error-handling (penanganan kesalahan)
tergantung kebutuhan dan rancangan pemrogram.
Sekali lagi, pengguna tidak perlu mengetahui bagaimana implementasi-nya. Bisa saja diimplementasikan
dengan struktur data array, bisa juga diimplementasikan dengan struktur data linked list (pointer based). Pada
gambar 5. digambarkan sebuah obyek yang berisi data dan mampu melakukan beberapa tugas.
Keterangan :
! "
! "
!"
!"
!"
!"
!"
!"
= Data (input)
= operasi yang tidak mengubah daftar terurut
= operasi yang meminta input untuk mengubah daftar terurut
Gambar 5. Objek Daftar Terurut
26
WAHJUDI
data[0]
0101970001
100
1
James Dean
data[1]
[kosong]
[kosong]
...
[kosong]
data[99]
[kosong]
[kosong]
3.c Implementasi menggunakan Array dalam bahasa C
E
*
diimplementasikan dalam bahasa pemrograman C.
Interface
Operasi
createlist(ukuran)
insert(xyz,baru)
Menambah sebuah data baru pada daftar xyz, mengembalikan status 1 jika
berhasil dan 0 jika gagal
27
WAHJUDI
search(xyz,key)
Mencari sebuah data dengan nilai key pada daftar xyz, mengembalikan posisi
record jika ditemukan, dan -1 jika tidak ditemukan
sizelist(xyz)
3.d Contoh program lengkap menggunakan ADT Daftar Terurut dalam bahasa C
int maxlist(daftarurut a) {
return a.max;
}
int sizelist(daftarurut a) {
return a.jdata;
}
#$/4
free((*xyz).data);
(*xyz).max=0;
(*xyz).jdata=0;
}
daftarurut createlist(int ukuran){
int i;
daftarurut xyz;
xyz.max = ukuran;
xyz.data = (tdata *)
$/#$/
xyz.jdata = 0;
56788/4
xyz.data[i].nim[0] = \0;
xyz.data[i].nama[0] =\0;
}
printf(ukuran list = %d\n,xyz.
max);
printf(jumlah data dalam list =
%d\n,xyz.jdata);
return xyz;
}
int insert(daftarurut *a, tdata baru){
int i,j;
if (isempty(a)) {
(*a).data[0] = baru;
/988
return 1;
}
if(!isfull(a)) {
j = sizelist(*a);
:956??@
nim,(*a).data[j-1].nim)<0) {
(*a).data[j] = (*a).data[j-1];
j = j - 1;
}
(*a).data[j] = baru;
/988
return 1;
}
else {
printf(Daftar sudah penuh);
while(scanf(%[^\n],b.nim)==1) {
/
gets(b.nama);
5?#$
/
if(hasilinsert==1)
@B@
C
n\n);
else
@B@CCE/
28
WAHJUDI
}
printlist(xyz);
printf(masukkan kunci untuk dicari : );
BGE?/
@5#$/
@55HI/
printf(Data tidak ditemukan\n\n);
else
@BJGKGHILGHM6CE@#$
J@K#$J@K/
?#$/
getch();
return 1;
DAFTAR PUSTAKA
1. Horowitz,E., Sahni,S. and Anderson-Freed,S.,(1993),
Fundamentals of Data Structures in C, Computer Science
/
~
2
2. Ngoen, T.S., (2009), Algoritma dan Struktur Data,
Mitra Wacana Media, Jakarta.
3. Stubbs, D.F., Webre, N.W.,(1985), Data Structures
with Abstract Data Types and Pascal, Brooks/Cole
%?
><$@@&0
<
Analysis in C, 2nd Edition,Addison Wesley.
?
=
Z
en.wikipedia.org/wiki/Abstract_data_types
IV.
PENUTUP
29