Anda di halaman 1dari 6

ULTIMATICS VOL. 1 NO.

1, DESEMBER 2009

WAHJUDI

TIPE DATA ABSTRAK MENGGUNAKAN BAHASA C


Universitas Multimedia Nusantara
Tangerang - Banten
Januar 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

tipe data. Tipe data (data type) yang umum digunakan


     

   

! 
 
    
  
 
untuk menyimpan karakter. Tipe data int dalam bahasa
C disimpan dalam memori sebesar 4 byte, dengan
demikian batasan nilai yang bisa disimpan adalah
"#$%&%'*+%' #$%&%'*+%&/ 

data int bisa dilakukan beberapa operasi, diantaranya
adalah operasi penjumlahan, pengurangan, perkalian,
pembagian, modulus, dan lain- lain.
Dari contoh tipe data int diatas, dapat dilihat bahwa
tipe data adalah sebuah wadah untuk menampung

    

 
  
dan operasi yang bisa dilakukan untuk data tersebut.
0
         
mengenai : jenis data, batasan data yang bisa disimpan.
Sedangkan operasi yang bisa dilakukan misalnya
penjumlahan, pengurangan, perkalian, pembagian, dan
lain-lain.
1
   2    
  

data sesuai kategori tipe data variabel tersebut. Dengan
demikian variabel pada program harus dikategorikan
pada salah satu tipe data yang ada, misalnya variabel
bernama contohvar bertipe data int, maka variabel
contohvar akan disimpan dalam memori sebesar 4 byte,
mampu menampung sebuah bilangan bulat dengan
  "#$%&%'*+%'   #$%&%'*+%&
dan terhadap variabel contohvar bisa dilakukan operasi
penjumlahan, pengurangan, perkalian, pembagian dan
lain-lain.
TIPE DATA ABSTRAK ...

ULTIMATICS VOL. 1 NO. 1, DESEMBER 2009

WAHJUDI

Gambar 1. dibawah ini untuk memperjelas hubungan


tipe data dan variabel. Misalnya terdapat potongan
program sebagai berikut :






int main() (


int variabel_a, nilai, xyz;




char huruf, angka;
...

Gambar 2b. Ilustrasi kasus 1 dengan array 10 nilai







Pada gambar 1., terlihat tiga wadah, wadah pertama



untuk variabel yang bertipe data int, wadah kedua untuk
G
  

   2 
  
variabel yang bertipe data char.
variabel_
a
xyz
nilai

ratarata
var_b

 

  
Gambar 1. Ilustrasi tipe data








 




Gambar 2a. Ilustrasi kasus 1 dengan 10 variabel integer

TIPE DATA ABSTRAK ...




 

 


 




Untuk mengatur penyimpanan data pada kasus


diatas diperlukan teknik penyimpanan data dalam

     



Teknik (metode/cara) penyimpanan data diatas disebut
Struktur data (data structures)(Stubbs, Webre, 1985,
pp1-43). Struktur Data dasar yang sering digunakan
adalah array, record, union dan pointer (reference).
Untuk kasus 1 diatas, bisa diatasi dengan struktur data
array (gambar 2b.). Untuk kasus 2 diatas bisa diatasi
menggunakan struktur data array dengan elemen berupa
record (disebut array of records, gambar 3b.).


 
  


  








 
  


  








 
  


  

Gambar 3a. Ilustrasi kasus 2 dengan 3 buah array yang memiliki 10


elemen

angka
huruf

Dalam pemrograman, bisa saja dibutuhkan banyak


variabel untuk menyimpan data yang bertipe sejenis.
Kasus 1(gambar 2a.), misalkan 10 buah variabel
bertipe data int untuk menampung nilai mahasiswa,
jika disediakan satu variabel untuk masing-masing
data, maka akan memerlukan 10 buah nama variabel
$O  

 R  
 

variabel akan membutuhkan beberapa baris program.
Kasus 2(gambar 3a.), selanjutnya jika selain nilai 10
mahasiswa tersebut perlu juga disimpan NIM (Nomor
Induk Mahasiswa), dan Nama Mahasiswa. Untuk nilai,
nama, dan NIM masing-masing mahasiswa harus ada
penghubung (link) sehingga nilai, nama dan NIM tidak
tertukar antar mahasiswa.

 



 

 






  






   








 
 
 
 

Gambar 3b. Ilustrasi kasus 2 dengan array 10 record mahasiswa

III.

TIPE DATA ABSTRAK

Tipe data abstrak (Abstract Data Type - ADT) adalah


tipe data yang diatur menggunakan struktur data tertentu

 3
  6  3
  
6
terpisah dari representasi dan implementasinya
(Horowitz, Sahni dan Freed, 1993,pp1-100). Pengguna
<= 
 
 

  
 
 
 
  


 
representasi dan implementasinya. Namun seorang
perancang program (program designer) perlu mengetahui
implementasinya. Antara user dan program designer
dipisahkan oleh interface (lihat gambar 4.).

Gambar 4. Interface and implementation


(http://developer.apple.com/)

>
 ?
 ?
 $@@& %$"'% 
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

ULTIMATICS VOL. 1 NO. 1, DESEMBER 2009

(sorted list) dalam imaginasi pengguna, memiliki



  

 Z
1. Data terdiri dari nilai kunci (yaitu NIM) untuk
mengurutkan berupa sebuah string dan string lainnya
(yaitu nama mahasiswa),
2. Ukuran maksimal daftar tersebut, misalnya 100
(seratus) karena dalam sebuah kelas tidak lebih dari 100
(seratus) mahasiswa
3. Jumlah mahasiswa dalam kelas
Pengguna akan melakukan beberapa hal seperti dalam

 
Z
1. membentuk sebuah daftar baru
2. menambahkan sebuah data mahasiswa pada daftar
3. mencari nama mahasiswa sesuai sebuah nilai,
misalnya NIM
Interface Operasi
createlist(ukuran)

4. mengetahui jumlah data pada daftar


5. mengetahui jumlah data maksimal pada daftar
6. menghapus seluruh data pada daftar
&

 
    
8. memeriksa apakah daftarurut sudah penuh
9. memeriksa apakah daftarurut masih kosong
10. dan lain-lain
Tipe data untuk daftar terurut diatas belum tersedia,
karena tipe data tersebut masih berada pada imaginasi
dan masih bersifat abstrak. Inilah makna abstrak pada
istilah Tipe Data Abstrak.
Untuk membentuk tipe data daftar terurut diatas,
tentu ada semacam interface untuk pengguna agar bisa
mengoperasikan daftar terurut tersebut.

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

TIPE DATA ABSTRAK ...

WAHJUDI

ULTIMATICS VOL. 1 NO. 1, DESEMBER 2009

3.b Representasi ADT Daftar Terurut menggunakan bahasa C


Untuk menyimpan data didalam memori komputer, harus diatur penyimpanan data dalam memori. Pada C,
bisa digunakan struct. Jumlah data pada daftar terurut dan ukuran daftar terurut berupa bilangan bulat, sehingga
digunakan tipe data int. NIM berupa string dengan panjang misalnya 12 karakter, dimana disimpan berupa deretan
tipe data char (array of char). Inilah data structure(struktur data).
Untuk menyimpan 100 (seratus) data, maka max diberi
typedef struct tdata {
char nim[12];
nilai 100 (seratus), dan akan disediakan sebuah array
char nama[30];
yang terdiri dari elemen sejumlah max. Sedangkan jdata
};
dimulai dari 0 (nol). Jdata akan bertambah otomatis setiap
typedef struct daftarurut {
kali terjadi penambahan data. Jika dimasukkan sebuah
tdata *data;
 
     3O$O$@&OOO$6
int max;
int jdata;
James Dean, maka jdata akan bertambah 1 (satu).
};
Ilustrasi representasi daftar terurut untuk contoh diatas
adalah sebagai berikut :
Data
max
Jdata

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)

Penjelasan Operasi dan implementasi dalam bahasa C


Membentuk sebuah daftar dengan ukuran tertentu, misalkan ukuran

daftarurut createlist(int ukuran){


int i;
daftarurut xyz;
xyz.max = ukuran;
xyz.data =(tdata *)malloc(sizeof(tdata) * xyz.max);
xyz.jdata = 0;
for(i=0;i<ukuran;i++) {
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;
}

insert(xyz,baru)

Menambah sebuah data baru pada daftar xyz, mengembalikan status 1 jika
berhasil dan 0 jika gagal

int insert(daftarurut *a, tdata baru){


int i,j;
if (isempty(a)) {
(*a).data[0] = baru;
(*a).jdata++;
return 1;
}
if(!isfull(a)) {
j = sizelist(*a);
while (j >= 0 && strcmp(baru.nim,(*a).data[j-1].nim)<0) {
(*a).data[j] = (*a).data[j-1];
j = j - 1;
}
(*a).data[j] = baru;
(*a).jdata++;
return 1;
}
else {
printf("Daftar sudah penuh);
printf(,jumlah data = %d",(*a).jdata);
printf(maksimal data = %d\n",(*a).max);
return 0;
}
}

TIPE DATA ABSTRAK


...


27

WAHJUDI

ULTIMATICS VOL. 1 NO. 1, DESEMBER 2009




search(xyz,key)

Mencari sebuah data dengan nilai key pada daftar xyz, mengembalikan posisi
record jika ditemukan, dan -1 jika tidak ditemukan

int searchlist(daftarurut a, char key[]){


int i;
for(i=0;i<a.jdata;i++) {
if(strcmp(a.data[i].nim, key)==0)
return i;
}
return -1;
}

sizelist(xyz)

Menghitung jumlah data pada daftar xyz, mengembalikan jumlah data

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;
56 7 88/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);

printf(,jumlah data = %d,(*a).


jdata);
printf(maksimal data = %d\n,(*a).
max);
return 0;
}
}
int searchlist(daftarurut a, char key[]){
int i;
56 9 88/4
if(strcmp(a.data[i].nim, key)==0)
return i;
}
return -1;
}
@/4
int i;
56 9 88/
printf([%d] %-12s %-30s\n,i,a.
data[i].nim, a.data[i].nama);
}
typedef struct tdata {
char nim[12];
char nama[30];
};
typedef struct daftarurut {
tdata *data;
int max;
int jdata;
};
int main() {
 @
char cari[12];
daftarurut xyz;
tdata b;
xyz=createlist(4);
printf(jumlah data pada list =
%d\n,sizelist(xyz));
printf(maximum jumlah data pada list
%d\n,maxlist(xyz));

while(scanf(%[^\n],b.nim)==1) {
/
gets(b.nama);
5?#$
/
if(hasilinsert==1)
@B@
C
n\n);
else
@B@CCE/

28

TIPE DATA ABSTRAK ...

WAHJUDI

ULTIMATICS VOL. 1 NO. 1, DESEMBER 2009

}
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

Pada pemrograman menggunakan Tipe data abstrak,


terdapat 5 (lima) bagian yang sebaiknya dipahami :

  

 

c) antarmuka(interface),
d) representasi data,
e) implementasi operasi.
Pengguna perlu mengetahui bagian a,b dan c saja.
Pemrogram harus mampu mengubah abstraksi
data dan operasi menjadi representasi data dan
implementasi sesuai dengan bahasa pemrograman yang
akan digunakan.

TIPE DATA ABSTRAK ...

29

Anda mungkin juga menyukai