Implementasi ADT
-
Upload
tjokorda-agung-budi-w -
Category
Documents
-
view
1.175 -
download
6
description
Transcript of Implementasi ADT
Judul:Implementasi ADT dalam Bahasa C
Mata Kuliah: PI1043 Struktur Data
Penulis: Tjokorda Agung Budi Wirayuda, ST, MT
Program Studi Diploma 3 Teknik Informatika
IT Telkom Bandung
Overview ADT Abtract Data Type merupakan suatu konsep pemrograman yang terkait dengan pendefinisian TYPE
dan kumpulan PRIMITIF terhadap TYPE tersebut. TYPE dapat dikatakan sebagai hasil proses Abstraksi
awal data dari permasalahan (studi kasus) yang sedang dihadapi. Sedangkan PRIMITIF adalah
operasi dasar terhadap TYPE tersebut.
Contoh pendefinisian TYPE: Misalkan anda dihadapakan pada sebuah studi kasus dimana anda
diminta untuk membangun sebuah Sistem Akademik dalam sebuah Perguruan Tinggi.
No Tahapan Hasil
1 Menentukan entitas yang terlibat dalam Sistem Akademik
Dosen, Mahasiswa
2 Melakukan pendefinisian kebutuhan detail data dari entitas yang diperoleh (mendefinisikan TYPE)
Dosen {Nama, NIP, Kode Dosen} Mahasiswa {Nama,NIM, Alamat, IPK}
3 Menentukan PRIMITIF dari TYPE yang sudah didefinisikan
Dosen: Operasi Penampilan Informasi, Operasi Pengaturan NIP, dll Mahasiswa: Operasi Penampilan Informasi, Operasi Pengaturan Alamat, dll
Sistem Akademik yang disebutkan diatas akan memiliki berbagai fungsionalitas dan kebutuhan yang
sangat banyak, sehingga anda harus melakukan analisa dengan sangat teliti dan detail.
Untuk latihan kali ini kita akan mengambil contoh kasus yang sederhana yaitu (Alat Counter),
perhatikan gambar berikut:
Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.
Dari gambar diatas dapat kita definisikan sebuah TYPE sebut saja TYPE AlatCounter:
TYPE AlatCounter :
<
CounterValue: integer;
>
Kemudian kita tentukan PRIMITIF yang dimiliki oleh AlatCounter tersebut, dimana ditemukan 2
PRIMITIF utama, yaitu:
void Reset(AlatCounter AC)
void Increase(AlatCounter AC)
Setelah melakukan desain dari ADT maka tahap selanjutnya kita implementasikan dalam Bahasa
Pemrograman dimana pada Mata Kuliah ini Bahasa Pemrograman yang digunakan adalah Bahasa C.
Proses pendefinisian ADT dalam bahasa C dapat digambarkan dalam bagan berikut ini:
Dari bagan diatas dapat terlihat bahwa untuk menerapkan Konsep ADT dengan baik maka kita harus
melakukan beberapa tahapan, yaitu : membuat spesifikasi pada file header (ditandai dengan
ekstensi *.h) kemudian melanjutkan dengan proses implementasi (pada file pustaka *.c). Kompilasi
file hasil spesifikasi dan implementasi akan menjadi Pustaka/Library yang disimpan dalam *.obj,
dimana *.obj ini akan dapat digunakan pada program-program selanjutnya dengan memberitahukan
kompiler bahwa kita menggunakan pustaka tersebut (#include <nama_header).
Ok kita mulai saja melakukan implementasi:
Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.
Tahap 1 : Mendefinisikan file header (Spesifikasi)
Tahap 2 : Mendefinisikan Primitif (Implementasi)
Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.
Tahap 3 : Membuat Main Program
Tahap 4 : Menjalankan Program Silahkan anda kompilasi dan execute program, hasilnya akan tampil seperti berikut
Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.
Dari skema pembuatan/implementasi ADT diatas dapat terlihat bahwa kita dapat menggunakan
subrutin yang telah kita definisikan sebelumnya dengan menggunakan mekanisme C Module
(#include <file_heade>). Dengan cara seperti ini maka kita telah meningkatkan level modularitas dan
reusabilitas program yang telah kita buat
Explorer Knowledge: Apa perbedaan pendefinisisan sebuah TYPE dengan menggunakan keyword struct dan typedef
struct?
Membangun ADT mendekati Konsep Objek Dalam kuliah awal telah disampaikan bahwa terdapat mekanisme pengaturan penggunaan memori
statis (pada stack memory) dan dinamis (pada heap memory). Pembangunan ADT yang telah
dilakukan diatas masih menggunakan mekanisme alokasi memori secara statis, bagaimana bila kita
ingin membangun ADT diatas dengan alikasi memori secara dinamis??
Sebelum melalui tahap tersebut maka anda harus memahami konsep pointer terlebih dahulu.
Pointer ?? Dalam bahasa C terdapat mekanisme Pointer dimana variabel bertipe Pointer digunakan
untuk mengacu/merefer/mencatat alamat memori dari data/variabel yang digunakan. Posisi/alamat
memori dari sebuah variabel dapat diakses dengan menggunakan simbol ‘&’. Perhatikan contoh
kode berikut:
Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.
Bila kode ini dijalankan maka akan muncul tampilan sebagai berikut:
Terlihat bahwa variabel i dan j berda pada alamat memori yang berbeda dan memiliki nilai yang
berbeda pula. Bagaimana kalai kita mengubah kode menjadi:
Bila kode ini dijalankan maka akan muncul tampilan sebagai berikut:
Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.
Dari tampilan diatas terlihat bahwa pi dan pj mengacu pada satu alamat memori yang sama sehingga
bila kita mengubah nilai yang terkandung dalam pj (baris-12) maka sama juga nilai pada pi akan
berubah.
Variabel bertipe pointer dalam bahasa C didefinisikan dengan menggunakan simbol ‘*’, dimana nilai
yang disimpan pada variabel merupakan alamat memori, untuk mengetahui nilai data pada alamat
memori tersebut digunakan tanda ‘*’ (perhatikan baris-13 dan 14).
Bila dibandingkan dengan variabel yang tidak bertipe pointer maka terdapat kesamaan dimana
informasi dari variabel terdiri atas 2 bagian yaitu nilai data dan alamat memori dari data tersebut
hanya saja cara mengakses ke 2 informasi tersebut yang berbeda.
ADT dengan Alokasi Dinamis Oke sekarang mari kita coba memodifikasi ADT yang telah dibuat dengan menerapkan konsep
alokasi memori Dinamis!! Secara umum tahap yang dilakukan sama namun terdapat perbedaan
kode implementasi dinamana untuk mempersiapkan sebuah variabel maka kita akan melakukan
alokasi memori dengan perintah malloc.
Tahap 1 : Mendefinisikan file header Dinamis (Spesifikasi)
Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.
Tahap 2 : Mendefinisikan Primitif Dinamis (Implementasi)
Tahap 3 : Membuat Main Program Dinamis
Tahap 4 : Menjalankan Program Dinamis Silahkan anda kompilasi dan execute program, hasilnya akan tampil seperti berikut
Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.
Perhatikan bahwa agar program dapat berjalan dengan benar maka harus dilakukan pengalokasian
memori terlebih dahulu dengan memanggil subrutin createAC() pada baris-9 maind.c. (coba anda
hilangkan baris-9 dan kompilasi ulang lalu jalankan, perhatikan yang terjadi !!)
Latihan Saatnya berlatih mendefinisikan ADT baik secara statis maupun dinamis, perhatikan gambar
berikut!!
Silahkan anda bangun ADT nya
Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.