Anda di halaman 1dari 33

MODUL PRAKTKUM

ALGORITMA DAN STRUKTUR DATA

Oleh :
Acep Taryana
Yogi Ramadhani
Ari Fadli

PROGRAM STUDI TEKNIK ELEKTRO


UNIVERSITAS JENDERAL SOEDIRMAN
PURWOKERTO
KAMPUS PURBALINGGA
2015
Contents
1 UNIT I : PEMBUATAN PROJECT ...................................................................................................... 4
1.1 Tujuan Praktikum .................................................................................................................... 4
1.2 Dasar Teori .............................................................................................................................. 4
1.2.1 Program dalam Sebuah File (*.cpp) ................................................................................ 4
1.2.2 Model I : Program dalam 2 File Terpisah (*.h, *.cpp) .................................................... 5
1.2.3 Model II : Program dalam 3 File Terpisah (*.h, *.h, *.cpp) ............................................ 5
1.3 Alat dan Bahan ........................................................................................................................ 6
1.4 Percobaan dan Pengamatan ................................................................................................... 6
1.5 Pertanyaan .............................................................................................................................. 8
2 UNIT II : PENGENALAN ADDRESSING ............................................................................................. 9
2.1 Tujuan Praktikum .................................................................................................................... 9
2.2 Dasar Teori .............................................................................................................................. 9
2.2.1 Gambaran Node .............................................................................................................. 9
2.2.2 Sebuah List : Kumpulan Node-Node ............................................................................... 9
2.2.3 Operasi Pos++ ................................................................................................................. 9
2.2.4 Operasi Pos-- ................................................................................................................. 10
2.2.5 Iterator Pos sebagai pencacah elemen List .................................................................. 10
2.2.6 Statement untuk mengetahui posisi di akhir List. ........................................................ 10
2.3 Alat dan Bahan ...................................................................................................................... 10
2.4 Percobaan dan Pengamatan ................................................................................................. 10
2.5 Pertanyaan ............................................................................................................................ 14
3 UNIT III : CLASS GERBONG............................................................................................................ 15
3.1 Tujuan Praktikum .................................................................................................................. 15
3.2 Dasar Teori ............................................................................................................................ 15
3.2.1 Pengenalan Konsep Class .............................................................................................. 15
3.2.2 Penciptaan dan Pemusnahan Objek Tanpa Menggunakan Pointer ............................. 15
3.2.3 Penciptaan Objek Dengan Menggunakan Pointer ........................................................ 16
3.3 Alat dan Bahan ...................................................................................................................... 16
3.4 Percobaan dan Pengamatan ................................................................................................. 16
3.5 Pertanyaan ............................................................................................................................ 22
4 UNIT IV : MODIFIKASI DAN VISUALISASI CLASS GERBONG .......................................................... 23
4.1 Tujuan Praktikum .................................................................................................................. 23
4.2 Dasar Teori ............................................................................................................................ 23
4.2.1 Deskripsi Class Secara Visual ......................................................................................... 23
4.3 Alat dan Bahan ...................................................................................................................... 24
4.4 Percobaan dan Pengamatan ................................................................................................. 24
4.5 Pertanyaan ............................................................................................................................ 27
5 UNIT V : MANIPULASI STRUKTUR DATA KERETA API ................................................................... 28
5.1 Tujuan Praktikum .................................................................................................................. 28
5.2 Dasar Teori ............................................................................................................................ 28
5.3 Alat dan Bahan ...................................................................................................................... 28
5.4 Percobaan dan Pengamatan ................................................................................................. 28
5.5 Pertanyaan ............................................................................................................................ 31
6 UNIT V : TUGAS BESAR ................................................................................................................. 32
6.1 Tujuan Praktikum .................................................................................................................. 32
6.2 Alat dan Bahan ...................................................................................................................... 32
6.3 Requirement System untuk Sistem Perparkiran ................................................................... 32
6.3.1 Functional Requirement ............................................................................................... 32
6.3.2 Non-Functional Requirement ....................................................................................... 32
6.4 Perancangan Tugas ............................................................................................................... 33
1 UNIT I : PEMBUATAN PROJECT
1.1 Tujuan Praktikum
Membimbing mahasiswa untuk dapat menyusun sebuah Project C++ menggunakan Perkakas
IDE Dev C++ yang terdiri dari :
1. File Program Utama/Driver
2. File Header/Prototipe Fungsi/Procedure/Rutin/Method
3. File Realisasi Fungsi/Procedure/Rutin/Method

1.2 Dasar Teori


Secara umum sebuah Program dalam C++ memuat bagian Header, Realisasi, Program Utama. Bagian-
bagian tersebut dapat ditempatkan dalam sebuah File (*.cpp) atau dalam beberapa buah File terpisah
yang terbagi menjadi File yang berisi Header (*.h), File yang berisi Realisasi (*.cpp), File yang berisi
Program Utama (*.cpp).

1.2.1 Program dalam Sebuah File (*.cpp)


1.2.2 Model I : Program dalam 2 File Terpisah (*.h, *.cpp)

1.2.2.1 Bagian Program Utama Bersatu dengan Bagian Realisasi

1.2.2.2 Bagian Header

1.2.3 Model II : Program dalam 3 File Terpisah (*.h, *.h, *.cpp)

1.2.3.1 Bagian Program Utama

1.2.3.2 Bagian Realisasi


1.2.3.3 Bagian Header

static int x;

1.3 Alat dan Bahan


1. Komputer
2. IDE Dev C++ 5.4.2 lengkap dengan Library STL C++

1.4 Percobaan dan Pengamatan


1. Bukalah Dev C++, buat Project dengan memilih menu File > New > Project

2. Pilihlah Console Application

3. Pilih OK, dan kemudian berilah nama projectnya. Klik Save untuk menyimpan project.
4. Setelah Project disimpan, akan muncul tampilan berikut ini, yang menunjukkan bahwa Anda
sudah dapat memulai menyusun Project dengan beberapa file, baik menggunakan Model I
atau Model II seperti yang dijelaskan dalam dasar teori. File main.cpp secara default akan
dibuatkan oleh IDE Dev C++ setelah project dibuatkan pertama kali. Sedangkan file Header
dan Realisasi harus diciptakan/dibuat oleh Anda sendiri dengan cara berikutnya.

5. Klik Project >> New File

6. Setiap kali Anda membuat File baru lakukanlah penyimpanan dan penamaan file tersebut,
misalkan header.h. Untuk membuat file baru lagi, ulangi langkah 5 di atas.
7. Namailah File Program Utama, Header, Realisasi seperti dibawah ini. Isi masing-masing file
sesuaikan dengan source code dalam dasar teori Model II di atas. Kemudian lakukan langkah
berikutnya untuk menkompilasi project tersebut.

8. Kompilasi dan Eksekusi.

1.5 Pertanyaan
1. Tuliskan Output dari Project di atas.
2. Gambarkan skema/urutan eksekusi dari Project di atas.
3. Apa yang terjadi jika directive #ifnedef, #endif, #define dihilangkan dari header.h ?
4. Apa yang terjadi jika using namespaces std dihilangkan ?
2 UNIT II : PENGENALAN ADDRESSING

2.1 Tujuan Praktikum


1. Membimbing mahasiswa agar dapat memahami pengalamatan dari operasi dasar List.
2. Mahasiswa mampu mengoperasikanstruktur data List yang telah disediakan dalam library
STL C++.
3. Mahasiswa mampu mengimplementasikan operasi-operasi List seperti push, pop.

2.2 Dasar Teori


List dalam STL C++ menggunakan double link list. Gambaran double link list sbb :

2.2.1 Gambaran Node

2.2.2 Sebuah List : Kumpulan Node-Node

2.2.3 Operasi Pos++


2.2.4 Operasi Pos--

2.2.5 Iterator Pos sebagai pencacah elemen List


Pos didefinisikan sebagai berikut :

List<int>::iterator Pos;

Pos ditunjukkan ke node awal dari list L :

Pos = L.begin()

Gambaran iterator pos dalam List

2.2.6 Statement untuk mengetahui posisi di akhir List.


if (pos ! = L.end()) {

cout << Pointer pos belum mencapai L.end() << endl;

} else

cout << Pointer pos sudah mencapai L.end() << endl;

2.3 Alat dan Bahan


1. Komputer
2. IDE Dev C++ 5.4.2 lengkap dengan Library STL C++

2.4 Percobaan dan Pengamatan


1. Buatlah program List Dasar di bawah ini dengan nama file Test1.cpp.
2. Lakukan Debugging dengan cara Klik menu Execute >> Debug atau langsung tekan tombol
F5. Arahkan mouse ke baris program nomor 4, tepat dinomor tersebut lakukan Klik untuk
menandai awal debugging sehingga memunculkan Kursor Bar seperti di tampilan berikut.
3. Tambahkan variabel/object/instance yang akan diamati dengan mengklik Add watch.
Misalnya akan diamati perubahan pengalamatan dari pointer l dan iterator pos. Tambahkan
satu persatu dengan mengklik tombol Add watch.

4. Pengaruh dari langkah no 3 adalah berikut ini. Perhatikan bagian sebelah kiri.

5. Lakukan Tracing statement program dengan mengklik tombol F7 sehingga memunculkan


Kursor Bar yang baru selain dari Kursor Bar Debuging. Cobalah klik F7 sampai Kursor Bar
Tracer menempati posisi baris nomor 7.
6. Amati perubahan pengalamatan pointer l beserta pos.Untuk mengetahui perubahan
tersebut, perluaslah tampilan bagian pengamatan sebagai berikut.

7. Catat nilai alamat M_Prev dan M_Next dari pointer l, dan nilai alamat M_node dari pointer
pos.
8. Lakukanlah Tracing kembali baris demi baris dan jangan lupa amati perubahan M_prev,
M_next dan M_node dari kedua pointer l dan pos. Untuk mencatat perubahan nilai tersebut
gunakan tabel sebagai berikut.
Tracing Baris ke l, M_Prev l, M_next pos, M_node
7
8
9
10
11
12
13

9. Modifikasilah program Test1.cpp di atas dengan mengubah l.push_back() menjadi


l.posh_front(). Kemudian lakukan kembali Tracing dan pengamatan perubahan
pengalamatan. Catatlah perubahan nilai pengalamatan menggunakan format tabel seperti
pada langkah 8 di atas.
10. Tambahkan statament pos++, pos - - ke dalam program yang telah anda buat. Lakukan Tracing
dan amatilah perubahan pengalamatan statement tersebut.
11. Tambahkan statement untuk mengetahui posisi pos di elemen terakhir List. Tracing kembali
dan amati perubahan pengalamatannya.

2.5 Pertanyaan
1. Apa artinya jika nilai M_prev dan M_next dari pointer l bernilai sama ?
2. Mengapa nilai M_node dari pointer pos pada tracing baris ke-7 sama dengan M_prev atau
M_next dari pointer l ?
3. Apa yang anda simpulkan hasil pencatatan pada tabel yang dihasilkan dari langkah 8 di atas ?
4. Pada alamat berapakah nilai iterator pos ketika sudah mencapai elemen List yang terakhir ?
3 UNIT III : CLASS GERBONG

3.1 Tujuan Praktikum


1. Mahasiswa mampu mendefinisikan sebuah Class.
2. Mahasiswa mampu menggunakan Class.
3. Mahasiswa mampu menciptakan objek atau instance dari sebuah Class.
4. Mahasiswa mampu memahami penciptaan (Create) dan pemusnahan (Destroy) Objek.
5. Mahasiswa mampu memahami Constructor dan Destructor dari sebuah Class.

3.2 Dasar Teori


3.2.1 Pengenalan Konsep Class

Class Name

Atribute

Constructor

Method

Operation

Destructor

3.2.2 Penciptaan dan Pemusnahan Objek Tanpa Menggunakan Pointer


// Deklarasi Objek
Gerbong grb; // grb adalah objek atau instance
Object yang diciptakan tidak perlu dihapus dari driver, melainkan akan terhapus secara otomatis. Dan
hal ini merupakan salah satu keuntungan menggunakan C++, karena pemrogram sudah tidak terlalu
dirumitkan dengan penggunaan pointer (*), walaupun programmer harus tetap memahaminya.

3.2.3 Penciptaan Objek Dengan Menggunakan Pointer


// Deklarasi Objek
Gerbong *grb=new Gerbong();

Objek ini harus dihilangkan dengan statement delete grb; yang diletakkan dibawah statement
penciptaan objek secara simetris.

3.3 Alat dan Bahan


1. Komputer
2. IDE Dev C++ 5.4.2 lengkap dengan Library STL C++

3.4 Percobaan dan Pengamatan


1. Buatlah project31 seperti dibawah ini berisi file yang terkelompokan ke dalam driver
(driverkereta.cpp), realisasi(gerbong.cpp), header (gerbong.h)
2. Kompilasilah project31, kemudian lakukan pengamatan debugging dan tracing dengan
menggunakan tombol fungsi F7.
3. Amatilah perubahan pengalamatan grb1, grb2, grb3, jumlahobject dengan menggunakan
fasilitas AddWatch.

4. Pada saat Tracing baris ke 13, double click object grb1 pada bagian kiri sehingga seperti
gambar di bawah ini. Perhatikan berapakah nilai static jumlahobject ! Lihat pula jumlahobject
untuk grb2, dan grb3. Berapakah nilainya ? samakah dengan grb1 ?
5. Ulangi kembali langkah 2,3,4. Lakukan tracing menggunakan tombol fungsi F8.
6. Pada saat kursor Tracing sedang mencapai baris ke 23, eksekusilah baris tersebut dengan
tombol tracing F8. Kursor bar akan pindah ke baris 24 pada halaman file gerbong.cpp seperti
di bawah ini.
7. Amatilah berapa kali method Gerbong::~Gerbong() dieksekusi !
8. Ulangi kembali langkah 1 sampai dengan langkah 7 dengan perubahan source code sebagai
berikut.
9. Output project dari program di atas adalah sebagai berikut.

10. Perhatikan Tulisan Hapus Object pada tampilan diatas, ada berapa baris ? Jika ingin
menampilkan tulisan Hapus Object sejumlah object yang diciptakan, apa yang harus anda
tambahkan pada program pada langkah 8 di atas.

3.5 Pertanyaan
1. Jika anda menciptakan objek A, B, C, D, E (tanpa pointer) bertipe Class Gerbong pada
percobaan unit 3, maka berapakali pemanggilan destructor ?.
2. Apa perbedaan fungsi tombol F7 dan F8 pada aktifitas Debugging ?
3. Mengapa nilai jumlahobject diseluruh object grb1, grb2, grb3 selalu sama jika telah diciptakan
minimal 1 objek ?
4 UNIT IV : MODIFIKASI DAN VISUALISASI CLASS GERBONG

4.1 Tujuan Praktikum


1. Mahasiswa mampu mendefinisikan strukturisasi Class sebagai model untuk pemecahan
masalah.
2. Mahasiswa mampu menggunakan Class dan memodifikasi Class dalam berbagai kebutuhan.
3. Mahasiswa mampu memahami hubungan antar Class (Asosiasi, Agregasi, Dependency)
4. Mahasiswa mampu membuat kode sumber untuk mengimplementasikan hubungan
Asosiasi, Agregasi, Dependency.
5. Mahasiswa mampu menyusun program yang memuat berbagai hubungan antar Class.

4.2 Dasar Teori


4.2.1 Deskripsi Class Secara Visual

Struktur InfoKursi menjadi


Class tersendiri
Class Gerbong
tergantung pada
Class InfoKursi

Modifikasi
dependency
Penggambaran Class
Gerbong pada Unit III

agregasi

Class KeretaApi memiliki


rangkaian Gerbong

4.2.1.1 Hubungan Antar Class (Dependency)


Class Gerbong Dependency terhadap Class InfoKursi. Penulisan Programnya sebagai berikut :
InfoKursi Kursi[4][10]; // Bagian dari atribut di Class Gerbong
Dependency direpresentasikan dengan garis panah terputus-putus :
4.2.1.2 Hubungan Antar Class (Agregasi)
Class KeretaApi agregasi terhadap rangkaian Class Gerbong. Penulisan Programnya sebagai berikut :

List<Gerbong> rangkaian; //atau


Collection<Gerbong> rangkaian; // atau
Vector<Gerbong> rangkaian
Agregasi direpresentasikan dengan garis yg diujungnya ada bentuk diamond terbuka:

4.3 Alat dan Bahan


1. Komputer
2. IDE Dev C++ 5.4.2 lengkap dengan Library STL C++

4.4 Percobaan dan Pengamatan


1. Buatlah project41, salin seluruh file (*.h) dan (*.cpp) dari project31.
2. Buatlah Class Baru bernama InfoKursi sebagai Class yang merepresentasikan informasi Kursi
seperti di bawah ini. Cara : Arahkan mouse ke nama Project, klik tombol mouse kanan, pilih
New File.

3. Modifikasilah Class Gerbong berikut ini.


Bandingkan
dengan Project31

4. Simpanlah seluruh perubahan kode sumber, lakukan kompilasi dan eksekusi. Amati hasil
eksekusi program tersebut, apakah ada perbedaan output dengan project31 ?
5. Lakukan Debugging seperti pada Project31. Jangan lupa untuk mengamati beberapa objek
yang terbentuk melalui Add Watch. Apakah ada perbedaan dengan project31?
6. Buatlah file header baru (keretaapi.h) sebagai berikut :
7. Buatlah file header baru (lokomotif.h) sebagai beriku t:

8. Tambahkan bagian program untuk menciptakan keretaapi pada driverkereta.cpp sebagai


berikut :
9. Lakukan Kompilasi, Eksekusi dan Pengamatan menggunakan Add Watch.
10. Amatilah penghapusan Objek

4.5 Pertanyaan
1. Tunjukkanlah kode sumber yang bertugas merangkaikan grb1, grb2, grb3 menjadi rangkaian
Kereta Api!.
2. Jeslaskan perbedaan method CetakGerbong() pada gerbong.cpp dengan CetakRangkaian() di
keretaapi.h!
3. Hitunglah ada berapa objek Gerbong yang terbentuk pada program di atas! Sebutkan nama-
nama objeknya!
4. Hitunglah ada berapa objek Kereta Api, sebutkan namanya!
5 UNIT V : MANIPULASI STRUKTUR DATA KERETA API

5.1 Tujuan Praktikum


1. Mahasiswa mampu menambahkan method baru pada struktur Class Gerbong, Class
KeretaApi, Class Lokomotif.
2. Mahasiswa mampu menggunakan method SearchingByBoolean dan SearchingByAddress
pada struktur Class KeretaApi.

5.2 Dasar Teori


[References]

5.3 Alat dan Bahan


1. Komputer
2. IDE Dev C++ 5.4.2 lengkap dengan Library STL C++

5.4 Percobaan dan Pengamatan


1. Buatlah project51, salin seluruh file (*.h) dan (*.cpp) dari project41.
2. Pisahkanlah header dan realisasi dari Class KeretaApi yang terbagi 2 bagian yaitu keretaapi.h
dan keretaapi.cpp. Sesuaikan isi file keretaapi.h seperti pada source code di bawah ini.
Buatlah file baru keretaapi.cpp.
3. Ujicoba Class KeretaApi yang telah dimodifikasi. Buka file driverkereta.cpp ! Tambahkan
statement berikut di bawah ini. Perhatikan, ada penambahan method baru yaitu
CetakAllRangkaian() dan CariGerbong().
4. Lakukan kompilasi, eksekusi dan debugging. Output program di atas adalah sebagai berikut :
5.5 Pertanyaan
1. Jelaskan tentang penghapusan Objek yang telah dibuat pada program di atas. Output program
menunjukkan ada 9x penghapusan objek.
2. Jeslaskan perbedaan method CetakRangkaian() dengan CetakALLRangkaian()
3. Termasuk pada kategori mana method CariGerbong() ? SearchingByBoolean atau
SearchingByAddress ?
6 UNIT V : TUGAS BESAR

6.1 Tujuan Praktikum


1. Mahasiswa mampu mengaplikasikan konsep Object, List dalam pengembangan awal system
perparkiran.
2. Mahasiswa mampu mengenali dan mengkonstruksikan requirement system sejak dini
3. Mahasiswa mampu menyusun struktur data, metode dari objek yang dirancang.

6.2 Alat dan Bahan


1. Komputer
2. IDE Dev C++ 5.4.2 lengkap dengan Library STL C++

6.3 Requirement System untuk Sistem Perparkiran


Requirement Sistem Perparkiran terbagi ke dalam dua kelompok, yaitu functional requirement dan
non-functional requirement yang dijabarkan di bawah ini.

6.3.1 Functional Requirement

6.3.1.1 Masukan dan keluaran system


Yang merupakan masukan system adalah data plat nomor kendaraan, dan data identitas pengendara
dalam sebuah kartu. Sedangkan keluaran system adalah bukti parkir, tagihan parkir (invoice),
informasi parkir.

6.3.1.2 Fitur
Sistem Perparkiran memiliki fitur utama meliputi deteksi nomor plat kendaraan, deteksi identitas
pengendara kendaraan, buka tutup portal (lengan parkir), pencatatan identitas parkir, alarm system
terhadap gangguan parkir, penagihan parkir, pelaporan parkir.

6.3.1.3 Kemampuan (capabilities)


Sistem perparkiran mampu mendeteksi plat nomor dalam jarak yang cukup jauh, 6 meter dari posisi
portal; mampu mengolah citra plat nomor dalam waktu 20 detik maksimum; mampu mendeteksi
identitas pengendara dalam waktu 20 detik; mampu mencatat tempat parkir yang terpakai oleh
kendaraan; mampu mengolah berbagai task/proses dalam waktu bersamaan (secara parallel).

6.3.1.4 Security
Sistem perparkiran mampu mendeteksi kejadian diluar kebiasaan seperti terbukanya portal karena
adanya pemaksaaan terhadap mesin secara fisik.

6.3.2 Non-Functional Requirement

6.3.2.1 Usability requirement


-

6.3.2.2 Reliability requirement


-

6.3.2.3 Performance requirement


Sistem mampu menjalankan task sesuai waktu respon yang ditentukan.
6.3.2.4 Supportability requirement
Sistem perparkiran mampu diuji dalam skala prototype yang dapat mewakili keadaan nyata saat
dijalankan. Sistem perparkiran yang dikembangkan memiliki adaptasi yang tinggi terhadap perubahan
kebutuhan yang akan datang, seperti penambahan Portal di sisi lain dari tempat parkir tanpa
mengganggu kinerja system yang sudah berjalan. Sistem perparkiran mudah dirawat karena peralatan
yang sederhana, mudah didapatkan dipasaran dan berukuran kecil.

6.4 Perancangan Tugas


Tugas besar dibuat per kelompok dikerjakan saat praktikum berlangsung (2 jam praktikum per
sesi, sejumlah 2 sesi). Langkah-langkah pengerjaan tugas sebagai berikut :
1. Menyusun Requirement System (ditulis ulang dari isi bab sebelumnya dalam bentuk yang
sesuai dengan laporan)
2. Menyusun Gambaran Umum Sistem
3. Menyusun Use-Case (lihat reference UML Notation)
4. Menyusun Class Diagram (lihat materi praktikum bab 4)
5. Menyusun Program C++
6. Membuat Laporan