DIG1G3 Implementasi Struktur Data Program Studi Diploma III Teknik Informatika Fakultas Ilmu Terapan Telkom University Dosen: Cahyana, S.T., M.Kom. Indra Azimi, S.T., M.T.
Review Pertemuan 1 • LONG vs FLOAT • Sama-sama 4 byte, tapi kapasitas penyimpanan berbeda. Mengapa?
Review Pertemuan 1 Enumerated types are types that are defined with a set of custom identifiers, known as enumerators, as possible values. enum colors_t {black, blue, green, cyan, red, purple, yellow, white}; colors_t mycolor; mycolor = blue; if (mycolor == green) mycolor = red;
Tujuan Pertemuan 2 • Mahasiswa memahami konsep abstract data type (ADT) • Mahasiswa mengetahui dan dapat mengimplementasikan ADT dalam bahasa C++
5
ADT ADT adalah definisi TYPE dan sekumpulan PRIMITIF terhadap TYPE tersebut. TYPE adalah gambaran lengkap mengenai sebuah data yang terdiri dari beberapa atribut. (Mahasiswa Nama, NIM, Tgl Lahir). PRIMITIF adalah operasi dasar terhadap TYPE tersebut. (Pendaftaran Mahasiswa, Pencetakan Mahasiswa)
6
ADT TYPE diterjemahkan menjadi type terdefinisi dalam bahasa yang bersangkutan, misalnya struct dalam bahasa C atau record dalam bahasa Ada/Pascal. PRIMITIF, dalam konteks prosedural, diterjemahkan menjadi fungsi atau prosedur berupa: • Proc Konstruktor • Proc Destruktor • Fungsi Selektor • Fungsi/Proc Pengubah Nilai • Fungsi/Proc Validator • Fungsi/Proc Operasi Relational • Fungsi/Proc Aritmetika • Fungsi/Proc Konversi • Fungsi/Proc Baca Tulis
7
Pustaka Pustaka biasanya berisi fitur-fitur tertentu. Pustaka biasanya dipisah menjadi 2 bagian yaitu: 1. Spesifikasi Berisi penjelasan/kontrak penggunaan fitur-fitur pustaka. 2. Implementasi Berisi kode implementasi lengkap fitur-fitur pustaka.
8
Pustaka.h dan pustaka.obj yang diberikan ke pengguna pustaka
Pustaka spesifikasi Pustaka.h
implementasi
Utama.cpp
kompilasi Pustaka.cpp
Pustaka.obj
9
Conceptual • Modularity • Information hiding • Abstract data type (ADT)
10
Pustaka Manfaat: 1. Reusability Beberapa program dapat menggunakan fitur-fitur di pustaka tersebut tanpa menulis ulang implementasinya. 2. Security Pengguna pustaka hanya perlu mengetahui spesifikasi fitur tanpa perlu diberikan implementasi detail fitur tersebut.
11
ADT JAM Tipe JAM terdiri dari atribut Hour, Minute, Second TYPE Hour : integer {0..23} TYPE Minute : integer {0..59} TYPE Second : integer {0..59} TYPEDEF STRUCT tJam { HH: Hour; MM: Minute; SS: Second; } Jam
12
PRIMITIF ADT JAM - Validator Function IsJValid(HH,MM,SS: integer) boolean - Konstruktor Function MakeJam(HH, MM, SS: integer) Jam; - Selektor Function GetHour(J: Jam) HH - Mutator / Pengubah Nilai Procedure SetHour(Input/Output J: Jam, newHH: integer);
13
PRIMITIF ADT JAM (cont’d) - Operasi Relational Function Later(J1: Jam, J2: Jam) boolean - Operasi Aritmetika Function Jplus(J1: Jam, J2: Jam) Jam - Baca/Tulis Procedure PrintJam(J: Jam)
14
ADT JAM Diagram Implementasi ADT Jam //Jam.H //deklarasi TYPE Jam //deklarasi PRIMITIF Jam //MainJam.CPP //Driver ADT Jam //Jam.CPP //implementasi PRIMITIF Jam
15
Exercise • Design an ADT-Counter
Solusi Exercise ADT-Counter Interface TYPE AlatCounter : < CounterValue: integer; > PROSEDURE Reset(I/O AC: AlatCounter); PROSEDURE Increase(I/O AC: AlatCounter); PROSEDURE Print(I/O AC: AlatCounter); Implementation PROSEDURE Reset(I/O AC: AlatCounter) AC.CounterValue=0; PROSEDURE Increase(I/O AC: AlatCounter) if (AC.CounterValue==9999) AC.CounterValue=0; else AC.CounterValue++; PROSEDURE Print(I/O AC: AlatCounter) cout << AC.CounterValue;
Spesifikasi
Mendefinisikan sebuah type bentukan dalam bahasa C dengan nama AlatCounter
Mendefinisikan prosedure dalam C yaitu dengan nama Void dan mengatur parameter menjadi I/O dengan menggunakan simbol ‘*’
Implementasi
Perhatikan bahwa mengakses Element menggunakan simbol ‘->’ karena bertipe pointer.
Main Program Import Pustaka yang dibuat yaitu: “adtac.h” Mendefinisikan variabel bertipe AlatCounter dan perhatikan pada baris-8 cara akses Element menggunakan simbol ‘;.’ Karena bukan Pointer
Pemanggilan void resetAC dan increment dengan tipe I/O Digunakan simbol ‘&’ untuk mengirimkan alamat memory dari variabel AC agar saling terkait