Implementasi ADT

9
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 Software http://www.foxitsoftware.com For evaluation only.

description

Sedikit Tulisan tentang Implementasi ADT dalam Bahasa C

Transcript of Implementasi ADT

Page 1: 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.

Page 2: Implementasi ADT

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.

Page 3: Implementasi ADT

Tahap 1 : Mendefinisikan file header (Spesifikasi)

Tahap 2 : Mendefinisikan Primitif (Implementasi)

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 4: Implementasi ADT

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.

Page 5: Implementasi ADT

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.

Page 6: Implementasi ADT

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.

Page 7: Implementasi ADT

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.

Page 8: Implementasi ADT

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.

Page 9: Implementasi ADT

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.