Anda di halaman 1dari 465

200

Rekayasa
Perangkat Lunak
Buku Teks Sekolah Menengah
Kejuruan
Aunur R. Mulyarto

Direktorat Jenderal Manajemen Pendidikan Dasar dan


Menengah
Aunur R. Mulyarto

REKAYASA
PERANGKAT LUNAK

Untuk SMK

Direktorat Pembinaan Sekolah Menengah Kejuruan


Direktorat Jenderal Manajemen Pendidikan Dasar dan Menengah
Departemen Pendidikan Nasional
Hak Cipta pada Departemen Pendidikan Nasional
Dilindungi Undang-undang

REKAYASA
PERANGKAT
LUNAK
Untuk SMK

Penulis : Aunur R. Mulyarto

Ukuran Buku : …. x …. cm

……
ANR Aunur R. Mulyarto
R Rekayasa Perangkat Lunak : untuk SMK/oleh Aunur R. Mulyarto.
Jakarta Pusat, Direktorat Pembinaan Sekolah Menengah Kejuruan, Direktorat
Jenderal Manajemen Pendidikan Dasar dan Menengah, Departemen
Pendidikan Nasional, 2008.
vi. 439 hlm
ISBN - - -

Diterbitkan oleh Direktorat Pembinaan Sekolah Menengah Kejuruan


Direktorat Jenderal Manajemen Dasar dan Menengah
Departemen Pendidikan Nasional
Tahun 2008

Diperbanyak oleh….
KATA SAMBUTAN

Puji syukur kami panjatkan kehadirat Allah SWT, berkat rahmat dan karunia
Nya, Pemerintah, dalam hal ini, Direktorat Pembinaan Sekolah Menengah
Kejuruan Direktorat Jenderal Manajemen Pendidikan Dasar dan Menengah
Departemen Pendidikan Nasional, pada tahun 2008, telah melaksanakan
penulisan pembelian hak cipta buku teks pelajaran ini dari penulis untuk
disebarluaskan kepada masyarakat melalui website bagi siswa SMK.

Buku teks pelajaran ini telah melalui proses penilaian oleh Badan Standar
Nasional Pendidikan sebagai buku teks pelajaran untuk SMK yang
memenuhi syarat kelayakan untuk digunakan dalam proses pembelajaran
melalui Peraturan Menteri Pendidikan Nasional Nomor 12 tahun 2008.

Kami menyampaikan penghargaan yang setinggi-tingginya kepada seluruh


penulis yang telah berkenan mengalihkan hak cipta karyanya kepada
Departemen Pendidikan Nasional untuk digunakan secara luas oleh para
pendidik dan peserta didik SMK di seluruh Indonesia.

Buku teks pelajaran yang telah dialihkan hak ciptanya kepada Departemen
Pendidikan Nasional tersebut, dapat diunduh (download), digandakan,
dicetak, dialihmediakan, atau difotokopi oleh masyarakat. Namun untuk
penggandaan yang bersifat komersial harga penjualannya harus memenuhi
ketentuan yang ditetapkan oleh Pemerintah. Dengan ditayangkannya soft
copy ini akan lebih memudahkan bagi masyarakat untuk mengaksesnya
sehingga peserta didik dan pendidik di seluruh Indonesia maupun sekolah
Indonesia yang berada di luar negeri dapat memanfaatkan sumber belajar
ini.

Kami berharap, semua pihak dapat mendukung kebijakan ini. Selanjutnya,


kepada para peserta didik kami ucapkan selamat belajar dan semoga dapat
memanfaatkan buku ini sebaik-baiknya. Kami menyadari bahwa buku ini
masih perlu ditingkatkan mutunya. Oleh karena itu, saran dan kritik sangat
kami harapkan.

Jakarta,
Direktur Pembinaan SMK
Dengan segala kerendahan hati, kami mengucapkan syukur kepada Allah
SWT. Karena hanya dengan lindungan, rahmat dan karuniaNya-lah maka buku ini
dapat diselesaikan.
Buku yang berjudul ’Rekayasa Perangkat Lunak’ merupakan buku yang
disusun untuk memenuhi kebutuhan buku pegangan bagi siswa Sekolah Menengah
Kejuruan. Khususnya pada program keahlian Rekayasa Perangkat Lunak. Buku ini
memuat uraian yang mengacu pada standar kompetensi dan kompetensi dasar
Rekayasa Perangkat Lunak untuk siswa SMK mulai dari kelas X, XI sampai dengan
kelas XII.
Tiap bab berisi teori yang harus dipahami secara benar oleh peserta didik dan
disertai dengan contoh-contoh soal yang relevan dengan teori tersebut. Selain itu
terdapat juga soal-soal yang didasarkan pada konsep dan teori yang dibahas sebagai
alat uji untuk mengukur kemampuan peserta didik dalam penguasaan materi tersebut.
Dalam mengembangkan buku ini, penulis berupaya agar materi yang disajikan
sesuai dengan kebutuhan kompetensi yang harus dicapai. Oleh karenanya, selain dari
hasil pemikiran dan pengalaman penulis sebagai pengajar dan praktisi Rekayasa
Perangkat Lunak, materi yang dikembangkan juga diperkaya dengan referensi-
referensi lain yang sesuai.
Pada kesempatan ini penulis ingin menyampaikan rasa terima kasih kepada
semua pihak yang mendukung buku ini dapat diterbitkan. Mudah-mudahan buku ini
dapat bermanfaat bagi peserta didik dalam mengembangkan kemampuannya. Penulis
menyadari bahwa buku ini masih perlu dikembangkan terus menerus, sehingga saran
dari berbagai pihak pengguna buku ini sangat diharapkan.

Malang, Desember 2007

Penulis

iii
iv
Halaman

PENGANTAR PENULIS iii


DAFTAR ISI v
DAFTAR GAMBAR xii
DAFTAR TABEL xxi
DAFTAR LAMPIRAN xxii
PETUNJUK PENGGUNAAN BUKU xxiii

1 PENDAHULUAN 1
1.1. Pengertian Rekayasa Perangkat Lunak 2
1.2. Tujuan Rekayasa Perangkat Lunak 2
1.3. Ruang Lingkup 3
1.4. Rekayasa Perangkat Lunak dan Disiplin Ilmu Komputer 4
1.5. Rekayasa Perangkat Lunak dan Disiplin Ilmu Lain 8
1.6. Perkembangan Rekayasa Perangkat Lunak 8
1.7. Profesi dan Sertifikasi 9
1.8. Rekayasa Perangkat Lunak dan Pemecahan Masalah 10
1.8.1. Masalah dan Gejala 10
1.8.2. Tipe-tipe Masalah 11
1.8.3. Pemecahan Masalah 12
1.9. Ringkasan 14
1.10. Soal-soal Latihan 15

2 METODE REKAYASA PERANGKAT LUNAK 17


2.1. Model Proses Rekayasa Perangkat Lunak 18
2.1.1. The Waterfall Model 19
2.1.2. Prototyping Model 20
2.1.3. Unified Process dan Unified Modeling Language 23
2.2. Tahapan Rekayasa Perangkat Lunak 25
2.2.1. Analisis 25
2.2.2. Disain 30
2.2.3. Konstruksi 31
2.2.4. Pengujian 31
2.2.5. Perawatan dan Konfigurasi 31
2.3. Ringkasan 32
2.4. Soal-soal Latihan 33

3. ELEKTRONIKA DAN SISTEM KOMPUTER 35


3.1. Dasar Elektronika 36
3.1.1. Konsep Dasar Elektronika 36

v
3.1.2. Komponen-Komponen Elektronika 37
3.2. Elektronika Digital 38
3.2.1. Pengertian Elektronika Digital 38
3.2.2. Gerbang Logika 39
3.2.3. Rangkaian Digital 41
3.3. Sistem Komputer 41
3.3.1. Perangkat Keras 42
3.3.2. Perangkat Lunak 50
3.4. Ringkasan 54
3.5. Soal-Soal Latihan 54

4. SISTEM OPERASI 55
4.1. Pengertian Sistem Operasi 56
4.1.1. Fungsi 56
4.1.2. BIOS 61
4.2. Jenis-Jenis Sistem Operasi 62
4.2.1. DOS 62
4.2.2. UNIX 63
4.2.3. Microsoft Windows 66
4.2.4. Apple Mac OS 68
4.2.5. Linux 69
4.3. Menyiapkan dan Menjalankan Sistem Operasi 70
4.3.1. Instalasi 70
4.3.2. Booting 73
4.3.3. Perintah berbasis teks 75
4.3.4. Bekerja dengan GUI 87
4.4. Bekerja dalam Jaringan Komputer 88
4.4.1. Persiapan 88
4.4.2. Konfigurasi koneksi jaringan 91
4.4.3. Berbagi file, printer, dan sumber daya lain 92
4.5. Ringkasan 95
4.6. Soal-Soal Latihan 95

5. ALGORITMA PEMROGRAMAN DASAR 97


5.1. Variabel, Konstanta dan Tipe Data 98
5.1.1. Variabel 98
5.1.2. Konstanta 99
5.1.3. Tipe Data 99
5.2. Struktur Algoritma Pemrograman 105
5.2.1. Pengertian Algoritma 105
5.2.2. Cara Penulisan Algoritma 106
5.2.3. Struktur algoritma berurutan 109
5.2.4. Struktur algoritma percabangan 111
5.2.5. Struktur algoritma pengulangan 117
5.3. Pengelolaan Array 125
5.3.1. Pengertian array 125
5.3.2. Pencarian data dalam array 126
vi
5.3.3. Pengurutan data pada array 128
5.4. Operasi File 130
5.4.1. Algoritma penulisan data pada file 131
5.4.2. Algoritma pembacaan data pada file 131
5.5. Ringkasan 132
5.6. Soal-soal Latihan 133

6. ALGORITMA PEMROGRAMAN LANJUTAN 135


6.1. Array Multidimensi 136
6.1.1. Pengertian array multidimensi 136
6.1.2. Operasi matriks dengan array multidimensi 137
6.2. Prosedur dan Fungsi 140
6.3. Ringkasan 142
6.4. Soal-soal Latihan 143

7. PEMROGRAMAN APLIKASI DENGAN VB DAN VB.NET 145


7.1. Dasar-dasar Visual Basic 146
7.1.1. Prinsip Pokok Pemrograman Berbasis GUI 150
7.1.2. Tipe data, variabel dan konstanta 152
7.1.3. Operator 153
7.1.4. Struktur kontrol program 154
7.1.5. Prosedure dan Fungsi 164
7.2. Akses dan Manipulasi Basis Data dengan Visual Basic 167
7.2.1. Membuat dan memanipulasi basis data dengan ADO 168
7.3. Teknologi COM 169
7.3.1. Pengertian dan konsep COM 169
7.4. Ringkasan 171
7.5. Soal-soal Latihan 171

8. PEMROGRAMAN BERORIENTASI OBYEK DENGAN JAVA 173


8.1. Konsep Pemrograman Berorientasi Obyek 174
8.1.1. Abstraksi 175
8.1.2. Enkapsulasi 175
8.1.3. Inheritance 176
8.1.4. Polymorphism 176
8.2. Pengenalan Pada Java 176
8.2.1. Kebutuhan Perangkat Lunak 177
8.2.2. Kompilasi Kode Preogram 178
8.3. Tipe Data, Variabel, Operator Dan File I/O 180
8.3.1. Tipe Data 180
8.3.2. Variabel dan Konstanta
8.3.3. Input / Output
8.4. Operator 183
8.4.1. Operator aritmatika 183
8.4.2. Operator Relasional 184
8.4.3. Operator Logika 186
8.5. Struktur Kontrol Program 186
vii
8.5.1. Struktur pemiliihan 186
8.5.2. Struktur pengulangan 187
8.5.3. Menggunakan Break dan Control 189
8.6. Exception Handling 190
8.6.1. Pengertian Excepton Handling 190
8.6.2. Try dan Catch 191
8.6.3. Throw 193
8.6.4. Finally 193
8.7. Multi-Threading 195
8.7.1. Pengertian thread 195
8.7.2. Pembuatan dan Penggunaan Thread 196
8.7.3. Multi-Thread 197
8.8. Aplikasi Pemrograman Berorientasi Obyek dengan Java. 198
8.8.1. Pembuatan Kelas 199
8.8.2. Penerapan Inheritance 205
8.8.3. Penerapan Overriding dan Overloading 208
8.8.4. Penerapan Polymorphism 211
8.8.5. Menggunakan Paket dan Interface 213
8.9. Ringkasan 217
8.10. Soal-soal Latihan 218

9. PEMROGRAMAN APLIKASI DENGAN C++ 221


9.1. Dasar-Dasar Pemrograman C++ 222
9.1.1. Kerangka Program C++ 224
9.1.2. Header File (.h) 224
9.1.3. Komentar, Identifier dan Tipe Data 225
9.1.4. Operator 228
9.1.5. Struktur Kontrol Program 229
9.1.6. Input/Output 233
9.2. Fungsi Dalam C++ 235
9.2.1. Tipe-tipe Fungsi 235
9.2.2. Penggunaan Parameter dalam Fungsi 236
9.3. Pointer Dan Array 237
9.3.1. Konsep dan Pengertian Pointer 238
9.3.2. Penggunaan New dan Delete pada Pointer 240
9.3.3. Array 240
9.4. Kelas 244
9.4.1. Konsep dan Deklarasi Kelas 244
9.4.2. Inheritance 246
9.4.3. Polimorfisme 248
9.5. Aplikasi Berorientasi Obyek 253
9.6. Ringkasan 255
9.7. Soal-soal Latihan 256

10. DASAR-DASAR SISTEM BASIS DATA 259


10.1. Data, Basis Data Dan Sistem Manajemen Basis Data 260
10.1.1. Basis Data 260
viii
10.1.2. Sistem Manajemen Basis Data 263
10.2. Entity-Relationship Diagram 268
10.2.1. Entitas 269
10.2.2. Atribut 270
10.2.3. Relationship 272
10.3. Basis Data Relasional 274
10.3.1. Model Basis Data Relasional 274
10.3.2. Struktur Basis Data Relasional 276
10.3.3. Relasi Antar Tabel 279
10.4. Ringkasan 283
10.5. Soal-Soal Latihan 284

11. APLIKASI BASIS DATA BERBASIS MICROSOFT ACCESS 285


11.1. Menu-Menu Umum Aplikasi Basis Data 286
11.2. Tabel 292
11.2.1. Pendefinisian Field dan Tipe Data. 292
11.2.2. Pengisian Data Pada Tabel 295
11.3. Query 296
11.3.1. Membuat Relasi Antar Tabel 296
11.3.2. Membuat Query 298
11.4. Form 308
11.4.1. Membuat Form 309
11.4.2. Memodifikasi Form 313
11.5. Report 319
11.6. Ringkasan 327
11.7. Soal-Soal Latihan 328

12. BASIS DATA BERBASIS SQL 329


12.1. Sekilas Tentang SQL 330
12.1.1. Data Definiton Language 330
12.1.2. Data Manipulation Language 330
12.2. Mempersiapkan Perangkat Lunak Berbasis SQL 331
12.2.1. Kebutuhan Operasi 331
12.2.2. Menjalankan Perangkat Lunak Basis Data Berbasis SQL 333
12.3. Menu/Fitur Utama 334
12.4. Pembuatan dan Pengisian Tabel 336
12.4.1. Pembuatan Basis Data 336
12.4.2. Pembuatan Tabel 336
12.4.3. Pengisian Data pada Tabel 338
12.5. Operasi Pada Tabel dan View 339
12.5.1. Relasi Antar Tabel 339
12.5.2. Membuat View 340
12.6. Menggunakan TSQL 345
12.6.1. Definisi Tabel dengan T-SQL 346
12.6.2. Pengisian, Perubahan dan Penghapusan Isi Tabel dengan SQL 349
12.6.3. Mencari dan Menampilkan Data (View) dengan SQL 351
12.7. Fungsi, Procedure dan Trigger 355
ix
12.7.1. Fungsi 355
12.7.2. Procedure dan Stored Procedures 358
12.7.3. Triggers 359
12.8. Administrasi Sql Server 360
12.8.1. Security dan Authentication 360
12.8.2. Permissions 362
12.9. Ringkasan 363
12.10. Soal-Soal Latihan 364

13. DISAIN WEB STATIS DAN HTML 365


13.1. Konsep Dasar dan Teknologi Web 366
13.1.1. Standar Teknologi Web 366
13.1.2. Web Statis dan Web Dinamis 367
13.2. Persiapan Pembuatan Web 368
13.2.1. Perangkat Keras 368
13.2.2. Perangkat Lunak 368
13.3. Membuat dan Menguji Halaman Web 373
13.4. HTML 375
13.4.1. Pengertian HTML 375
13.4.2. Sintaks dan Struktur Umum HTML 378
13.4.3. Format Dokumen 381
13.4.4. Penambahan Obyek 386
13.4.5. Tabel 388
13.4.6. Link Antar Dokumen 392
13.5. Ringkasan 393
13.6. Soal-soal Latihan 393

14. WEB DINAMIS BERBASIS JSP 395


14.1. Dasar Web Dinamis 396
14.1.1. Kebutuhan Lingkungan Teknis 396
14.1.2. Pemrograman Web Dinamis 397
14.1.3. Bahasa Skrip untuk Pemrograman Web 399
14.1.4. Persiapan Membuat Halaman Web Dinamis 401
14.1.5. Pembuatan dan Pengujian Halaman Web Dinamis 404
14.2. Sekilas Tentang JSP 405
14.2.1. Java dan JSP 406
14.2.2. Mekanisme Kerja Aplikasi Web Berbasis JSP 406
14.2.3. Kebutuhan Perangkat Lunak dan Konfigurasi 407
14.3. Dasar-dasar JSP 413
14.3.1. Directive 413
14.3.2. Elemen Scripting 414
14.3.3. Komentar 417
14.3.4. Action 417
14.4. Keamanan dalam Web Dinamis 420
14.5. Ringkasan 422
14.6. Soal-soal Latihan 423

x
DAFTAR PUSTAKA 425
LAMPIRAN 427
BIODATA PENULIS 439

xi
Judul Gambar Halaman

1.1. Tampilan desktop Microsoft Windows 1


1.2. Tujuan RPL. 3
1.3. Ruang lingkup RPL (Abran et.al., 2004). 3
1.4. Klasifikasi disiplin ilmu komputer menurut ACM (1998). 5
1.5. Klasifikasi disiplin ilmu komputer menurut Denning (2000). 6
1.6. Klasifikasi disiplin ilmu komputer menurut Wikipedia (2007). 7
1.7. Keterkaitan RPL dengan bidang ilmu lain. 8
1.8. Perkembangan RPL. 9
1.9. Profesi dokter. 10
1.10. Gejala dan masalah. 11
1.11. Tipe-tipe masalah (Deek et al, 2005). 11
1.12. Proses pemecahan masalah (diadopsi dari Deek et al, 2005) 13

2.1. Bekerja dengan komputer. 17


2.2. System Development Life Cycle (SDLC). 18
2.3. The Waterfall Model 20
2.4. Klasifikasi prototyping model (Harris, 2003) 21
2.5. Tahapan-tahapan prototyping model (Harris, 2003) 22
2.6. RUP Life Cycle (Ambler, 2005). 23
2.7. Tahapan dan aktifitas dalam analisis. 26
2.8. Notasi pada DFD. 27
2.9. Tahapan pembuatan DFD. 28
2.10 Context diagram sistem pemesanan makanan (Hoffer et al., 28
2002).
2.11. DFD Level 0. 29
2.12. Tipe-tipe perawatan. 32

3.1. Rangkaian dan perangkat elektronik.s 35


3.2. Resistor 37
3.3. Kapasitor 38
3.4. Induktor. 38
3.5. Tabel kebenaran dan representasinya dalam gerbang logika. 39
3.6. Bentuk turunan tabel kebenaran dan representasinya dalam 40
gerbang logika.
3.7. Contoh rangkaian digital dan representasinya pada hardware. 41
3.8. Sistem Komputer 42
3.9. Komponen dasar komputer 42
3.10 Perangkat keras komputer 44
3.11 Display atau monitor 45

xii
3.12. Motherboard sebuah komputer 45
3.13. Central Processing Unit (CPU) 46
3.14. Berbagai jenis main memory 46
3.15. Pemasangan expansion card 47
3.16. Power Supply Unit 47
3,17. CD-RW Drive, salah satu contoh Optical Disc Drive 48
3.18. Hard Disk 49
3.19. Skema umum sebuah keyboard 49
3.20. Berbagai jenis mouse 50
3.21. Tampilan desktop sistem operasi Windows XP 51
3.22. Application software Microsoft Word (Software pengolah 52
kota).
3.23. Application software Winrar (Software kompresi dan ekstraksi 52
file).
3.24. Application software PowerSim (Software untuk simulasi 53
sistem)
3.25. Application software Hysis (Software untuk perancangan 53
pabrik).

4.1. Menjalankan sistem operasi berbasis teks. 55


4.2. Fungsi-fungsi sistem operasi 57
4.3. Manajemen memori pada sistem operasi Microsoft Windows 58
4.4 Windows Explorer sebagai sarana pengelolaan file 59
4.5 Manajemen proses pada sistem operasi Microsoft Windows 60
4.6. Manajemen I / O pada sistem operasi Microsoft Windows. 61
4.7. Tampilan BIOS utility 62
4.8. Contoh penggunaan DOS 63
4.9. Unix dan sistem operasi turunannya 64
4.10. Manajemen memori dan penjadwalan proses pada Unix 65
4.11. X windows system di UNIX 66
4.12. Windows versi 3.11 67
4.13. Windows Vista 67
4.14. Mac OS versi awal 68
4.15. Mac OS X 69
4.16. Linux dengan desktop KDE 70
4.17. Testing media instalasi 72
4.18. Proses penentuan target instalasi 72
4.19. Proses copy file pada Fedora 73
4.20. Proses awal booting 74
4.21. Proses booting pada Linux Fedora 75
4.22. Terminal sedang menjalankan mode CLI 76
4.23. Perintah-perintah pada direktori sbin 77
4.24. Perintah-perintah pada direktori /usr/sbin. 77
4.25. Perintah-perintah pada direktori bin. 78
4.26. Perintah-perintah pada direktori /usr/bin 78
4.27. Contoh penggunaan perintah ls 79
4.28. Contoh penggunaan perintah cd 79
xiii
4.29. Contoh penggunaan perintah find 80
4.30. Contoh penggunaan perintah cat dan more 80
4.31. Contoh penggunaan perintah cp 81
4.32. Contoh penggunaan perintah mv untuk memindahkan file. 81
4.33. Contoh penggunaan perintah mv untuk mengganti nama file. 82
4.34. Contoh penggunaan perintah rm untuk menghapus file atau 82
direktori
4.35. Contoh penggunaan perintah mkdir 83
4.36. Attribute file / folder pada Microsoft WIndows 83
4.37. Attribute file / direktori pada keluarga Unix 84
4.38. Eksekusi perintah ps 85
4.39. Penggunaan perintah df. 86
4.40. Contoh hasil eksekusi perintah man untuk melihat manual 86
suatu perintah.
4.41. Membuka konteks menu dengan klik kanan. 87
4.42. Drag and drop 88
4.43. Network Interface Card 88
4.44. Membuka system properties 89
4.45. Device manager 90
4.46. Output perintah lspci untuk memeriksa network adapter.. 90
4.47. Memeriksa protocol TCP/IP 91
4.48. Kondisi koneksi jaringan 92
4.49. Mengatur file sharing 93
4.50 Menjelajah komputer yang ada di jaringan 94
4.51 Printer sharing 94

5.1. Perangko bergambar Muhammad ibn Mūsā al-Khwārizmī 97


5.2. Pengelompokkan tipe data 100
5.3. Simbol-simbol yang digunakan dalam flowchart 108
5.4 Program flowchart 109
5.5. Mobil sedang berjalan pada jalur lurus. 109
5.6. Flowchart menghitung volume balok dan luas lingkaran. 111
5.7. Flowchart untuk konversi suhu 111
5.9. Flowchart penyelesaian masalah nonton film 112
5.10. Flowchart penyelesaian untuk perhitungan dua buah bilangan 113
5.11. Flowchart penyelesaian untuk masalah fotokopi 115
5.12. Flowchart penyelesaian untuk kelulusan siswa. 116
5.13. Lomba balap mobil di sirkuit 117
5.14. Struktur algoritma pengulangan dengan For. 118
5.15. Flowchart menulis pernyataan 100 kali 119
5.16. Flowchart mencetak anggota himpunan 120
5.17. Flowchart mencetak bilangan tertentu 121
5.18. Flowchart dengan pengulangan bersarang 122
5.19. Flowchart umum While. 123
5.20. Flowchart pengulangan dengan while untuk mencetak nilai 124
tertentu
5.21. Lemari dengan banyak kotak laci di dalamnya 125
xiv
5.22. Flowchart untuk pencarian bilangan 128
5.23. Flowchart untuk pengurutan bilangan 130

6.1. Notasi matrik 135


6.2. Perbedaan array satu dimensi dan dua dimensi 136
6.3. Matrik 4 x 3 137
6.4. Algoritma untuk membuat matrik 4 x 3 138
6.5. Algoritma penjumlahan dua buah matrik 139
6.6. Skema penggunaan prosedur 140
6.7. Penyelesaian contoh 6.3 141

7.1. Aplikasi yang dibangun dengan Visual Basic 145


7.2. Tampilan awal Visual Basic 146
7.3. Tampilan awal untuk pilihan Standard.EXE 147
7.4. IDE Visual Basic 148
7.5. Toolbox VB 6 149
7.6. Obyek, Property, Method dan Event 151
7.7. Berbagai cara akse basis data dari Visual Basic 167
7.8. Jendela Reference 170

8.1. Logo Java 173


8.2. Kelas, atribut dan method 174
8.3. Contoh abstraction 175
8.4. Pewarisan 176
8.5. Netbeans IDE 177
8.6. Nama file dan lokasi penyimpanan 179
8.7. Cara eksekusi program dalam Java 179
8.8. Peringatan terjadinya kesalahan 191
8.9. Output dari try-catch 192
8.10. Output program dengan throw 193
8.11. Output kode program try-catch-finally 194
8.12. Hasil eksekusi multi-thread 198
8.13. Hasil eksekusi terhadap class DataSiswa 200
8.14. Eksekusi pada class yang mempunyai method 202
8.15. Hasil eksekusi program kelas Bangun dan Box. 208
8.16. Hasil eksekusi overriding pada method hitungLuas() 210
8.17. Hasil eksekusi overriding dan pernyataan super. 210
8.18 Kompilasi pada tiga file anggota paket 215

9.1. Pesawat Luar Angkasa 221


9.2. Proses kompilasi pada C++ 223
9.3. MingGW Developer Studio 223
9.4. Hasil eksekusi deklarasi pointer 239
9.5. Hasil eksekusi pointer NULL 240
9.6. Output hasil eksekusi program array sederhana 241
9.7. Hasil eksekusi deklarasi dan inisialisasi array 242
9.8. Hasil eksekusi array multidimensi 244
xv
9.9. Hasil eksekusi fungsi virtual dan overriding. 251
9.10. Abstraksi kasus persediaan barang di toko buku 254

10.1. Fasilitas contact list pada pesawat telepon seluler. 259


10.2. Lemari arsip dan basis data 261
10.3. Tingkatan dalam abstaksi data (Lewis et al., 2002) 262
10.4. Operasi-operasi dasar pada basis data 263
10.5. Struktur umum DBMS 264
10.6. Logo Microsoft Access 264
10.7. Tampilan Microsoft Access 265
10.8. Logo MySQL 265
10.9. Tampilan awal phpMyAdmin 266
10.10. Logo Microsoft SQL Server 266
10.11. GUI pada Microsoft SQL Server 267
10.12. Logo PostgreSQL 267
10.13. Logo Oracle 268
10.14. Notasi entitas pada ER-Diagram 268
10.15. Penggunaan notasi atribut pada ER-Diagram 269
10.16. Penggunaan notasi relationship pada ER-Diagram 269
10.17. Entitas siswa dan atributnya 270
10.18. Entitas guru dan atributnya 271
10.19. Entitas mobil dan atributnya 271
10.20. Relationship 273
10.21. Hubungan one-to-one suami dan istri 274
10.22. Hubungan one-to-many kelas dengan siswa 274
10.23. Hubungan table/file/relation, row/record/tuple dan 276
column/field/attribute
10.24. Kolom, constraint dan tipe data (Powell, 2006). 277
10.25. Contoh atribut sederhana 278
10.26. Contoh atribut komposit 278
10.27. Contoh atribut bernilai tunggal dan atribut bernilai banyak. 279
10.28. Tabel Pengarang 279
10.29. Tabel Penerbit 280
10.30. Tabel buku 280
10.31. ER-Diagram untuk Penerbit dan Buku 281
10.32. Hubungan table Penerbit dan Buku 281
10.33. ER-Diagram untuk Pengarang – Buku 282
10.34. Hubungan table Pengaran dan Buku 283
10.35. Relasi antar table 283

11.1. Microsoft Access 2007 288


11.2. Tampilan awal Microsoft Access 286
11.3. Penentuan nama dan lokasi basis data 287
11.4. Bagian-bagian sebuah basis data pada Microsoft Access 287
11.5. Toolbar pada menu Create 288
11.6. Toolbar pada menu External Data 289
11.7. Toolbar pada menu Database Tool 289
xvi
11.8. ER Diagram untuk kasus Basis Data Penjualan Buku 270
11.9. Tahap awal pembuatan table 292
11.10. Pendefinisian field, tipe data, constraint dan domain 293
11.11. Toolbar Microsoft Access 293
11.12. Struktur table pembeli 294
11.13. Struktur table buku 294
11.14. Struktur table pesanan 294
11.15. Struktur table item_pesanan 294
11.16. Hasil pengisian data pada table pembeli 295
11.17. Hasil pengisian data pada table buku 295
11.18. Hasil pengisian data pada table pesanan 295
11.19. Hasil pengisian data pada table item_pesanan 296
11.20. Jendela Relationships 296
11.21. Jendela Show Table 296
11.22. Tabel-tabel yang akan direlasikan 297
11.23. Jendela untuk edit relationships 297
11.24. Relasi untuk keseluruhan table 298
11.25. Jendela query pada mode design view 299
11.26. Prosedur dan hasil query table buku 300
11.27. Query nama pengarang dan bukunya 301
11.28. Query judul buku dan harga dengan urutan 302
11.29. Query dengan criteria tertentu 302
11.30. Query dengan menggunakan operator and 303
11.31. Query dengan menggunakan operator or 304
11.32. Pemilihan table untuk query dua table. 305
11.33. Query dua tabel 306
11.34. Query tiga table. 307
11.35. Query empat table 308
11.36. Jenis-jenis form 309
11.37. Membuka jendela Form Wizard 309
11.38. Pemilihan table yang akan dibuat formnya 310
11.39. Pemilihan field untuk form 310
11.40. Jendela untuk memilih model tampilan form 311
11.41. Jendela untuk memilih style form 311
11.42. Jendela untuk memberi nama form 312
11.43. Form Pembeli 312
11.44. Form Buku 313
11.45. Jendela Form Pembeli pada mode Design View 313
11.46. Bagian-bagian suatu form 314
11.47. Perubahan pada Label fields pada Form Pembeli 315
11.48. Modifikasi tampilan form 315
11.49. Mendefinisikan aksi untuk suatu Command Button 316
11.50. Mendefinisikan teks pada Command Button 316
11.51. Mendefinisikan nama Command Button 317
11.52. Mendefinisikan nama Command Button 318
11.53. Hasil modifikasi Form Pembelian 319
11.54. Jendela query untuk sumber report 320
xvii
11.55. Pemilihan query sebagai sumber data laporan. 320
11.56. Pemilihan fields yang terlibat 321
11.57. Jendela untuk menentukan dasar tampilan report 322
11.58. Jendela untuk menentukan grouping data 322
11.59. Jendela untuk menentukan urutan data 323
11.60. Jendela untuk mengatur tampilan ringkasan 323
11.61. Jendela untuk mengatur lay-out dan orientation 324
11.62. Jendela untuk mengatur style laporan 324
11.63. Hasil pembuatan laporan menggunakan Wizard 325
11.64. Laporan dalam mode Design View 325
11.65. Design laporan setelah dilakukan perbaikan 326
11.66. Print Preview laporan setelah perbaikan 327

12.1. Perangkat komputer server 329


12.2. Jendela Administrative Tool 332
12.3. Jendela Services 332
12.4. Tampilan autentikasi SQL Server Management Studio 333
12.5. Tampilan awal SQL Server Management Studio. 334
12.6. Obyek Databases 335
12.7. Isi dari basis data pada SQL Server 335
12.8. Mendefinisikan basis data baru 336
12.9. Pembuatan tabel 337
12.10. Pengisian tabel. 339
12.11. Jendela untuk menambah tabel yang berhubungan 339
12.12. Relasi antar tabel 340
12.13. Jendela untuk menentukan tabel yang akan dibuat View.
12.14. Jendela untuk membuat View 341
12.15. Hasil eksekusi View 342
12.16. Hasil eksekusi View contoh 12.1 343
12.17. Hasil eksekusi View contoh 12.2 344
12.18. Hasil eksekusi View contoh 12.3 345
12.19. Membuka jendela query 346
12.20. Isi tabel Bidang 349
12.21. Isi tabel Bidang setelah INSERT data 350
12.22. Halaman security pada jendela Server Properties 361
12.23. Jendela untuk membuat user baru 362
12.24. Hak akses basis data oleh user 363

13.1. Halaman web 365


13.2. Menjalanka service Apache (httpd) pada Linux 369
13.3. Memeriksa dan menginstal IIS 370
13.4. Microsoft Internet Explorer 371
13.5. Safari. 372
13.6. Opera. 372
13.7. Contoh Struktur direktori situs web 373
13.8. File index.html dan lokasi penyimpanannya 374
13.9. Hasil pengujian file index.htm 375
xviii
13.10. Teks editor Notepad 376
13.11. Macromedia Dreamweaver 376
13.12. Quanta pada system operasi Linux 377
13.13. Bluefish pada system operasi Linux 377
13.14. Struktur umum dokumen HTML 379
13.15. Header dokumen HTML tanpa tag title 379
13.16. Header dokumen HTML dengan tag title 380
13.17. Dokumen HTML dengan body content sederhana 380
13.18. Dokumen HTML dengan body content yang lebih kompleks 381
13.19. Penggunaan heading 381
13.20. Penggunaan paragraph 382
13.21. Tag <BR> dan <P>. 382
13.22. Penggunaan Ordered List 383
13.23. Penggunaan Unordered List 384
13.24. Penggunaan Direktori List 384
13.25. Penggunaan Menu List 385
13.26. Penggunaan Definition lis List 385
13.27. Penggunaan tag Font 386
13.28. Penggunaan garis 387
13.29. Penggunaan tag image 387
13.30. Penggunaan attribute-attribute tag IMG 388
13.31. Table sederhana 389
13.32. Tabel dengan format yang lebih kompleks 389
13.33. Cellpadding, cellspacing dan border 390
13.34. Rowspan. 391
13.35. Colspan. 391
13.36. Tabel dengan sel berisi gambar 392
13.37. Penggunaan tag anchor 392

14.1. Halaman pencarian Google 395


14.2. Pertukaran data antara client dan server 398
14.3. Jendela Services 401
14.4. Opera sedang memanggil alamat server 402
14.5. Daftar perangkat lunak yang terinstal pada Windows 403
14.6. Lokasi direktori yang bisa dibaca web server 404
14.7. Pengujian halaman web dinamis 405
14.8. Mekanisme kerja aplikasi web dengan JSP 406
14.9. NetBeans 6.1 dengan Apache Tomcat terintegrasi 408
14.10. Admin Console Java Application Server 408
14.11. Penentuan lokasi penyimpanan file 409
14.12. Penetuan tipe project 410
14.13. Penentuan nama dan lokasi project 410
14.14. Tipe dan pengaturan server 411
14.15. Lingkungan kerja NetBeans 411
14.16. Struktur direktori aplikasi JSP 412
14.17. Hasil eksekusi halaman web JSP 413
14.18. Hasil eksekusi penggunaan tag deklarasi 415
xix
14.19. Hasil eksekusi tag ekspresi 416
14.20. Hasil eksekusi halaman login.html 419
14.21. Hasil eksekusi jika nama dan password benar 419
14.22. Penyerangan dengan DOS 421
14.23. Membatasi akses untuk IP address tertentu 422

xx
No. Judul Tabel Halaman

2.1. Aturan-aturan dalam DFD 30


4.1 Perintah yang berhubungan dengan pengelolaan file/direktori 85
7.1. Operator Aritmatika 153
7.2. Operator perbandingan 154
7.3. Operator logika 154
8.1. Tipe data pada Java 180
8.2. Operator aritmatika pada Java 183
9.1. Tipe data pada C++. 226
9.2. Tabel 9.2. Operator pada C++. 228
9.3. Kelas, fungsi, dan parameter pada aplikasi persediaan toko
buku
11.1. Tabel dan atribut pada Basis Data Penjualan Buku 271
11.2. Tabel, atribut, tipe data dan constraint/domain pada Basis 271
Data Penjualan Buku
12.1. Tabel, kolom, tipe data yang akan dibuat 338
13.1. Daftar attribute TYPE untuk Ordered list dan Unordered list 354
13.2. Bagian-bagian pada tag Table 358
13.3. Attribute-attribute tag <INPUT> 362
21.1. Jenis-jenis operator 382

xxi
No. Judul Lampiran Halaman

1. Daftar Istilah / Glosari 427


2. Daftar Alamat Situs 433
3. Fungsi-fungsi Built-in pada Visual Basic. 435

xxii
A. Deskripsi Umum
Buku ini diberi judul “Rekayasa Perangkat Lunak”,sama dengan salah satu
program keahlian pada Sekolah Menengah Kejuruan (SMK). Meskipun demikian,
sebenarnya isi dari buku ini tidak secara khusus membahas tentang Rekayasa
Perangkat Lunak. Dari sisi pandang bidang Ilmu Komputer ada lima sub-bidang yang
tercakup dalam dalam buku ini, yaitu sub-bidang Rekayasa Perangkat Lunak, Sistem
Operasi, Algoritma dan Struktur Data, Bahasa Pemrograman dan Basis Data. Hal ini
disesuaikan dengan kurikulum tingkat SMK untuk Program Keahlian Rekayasa
Perangkat Lunak.
Pokok bahasan tentang Rekayasa Perangkat Lunak secara umum membahas
dasar-dasar pengertian Rekayasa Perangkat Lunak, masalah dan pemecahan masalah,
dan metode-metode pengembangan perangkat lunak. Pembahasan tentang sub-
bidang Sistem Operasi berisi sistem computer, sistem operasi dan bekerja dalam
jaringan computer. Cakupan materi algoritma meliputi algoritma dasar dan algoritma
lanjutan. Sub bidang Bahasa Pemrograman mengambil porsi yang cukup besar,
meliputi pemrograman GUI dengan VB & VB.Net, pemrograman Java, pemrograman
C++, pemrograman berorientasi obyek dan Pemrograman berbasis web. Sub-bidang
terakhir yang menjadi bagian dari buku ini adalah Basis Data dengan cakupan tentang
system basis data, pemodelan konseptual, basis data relasional, Microsoft Access dan
SQL.

B. Peta Kompetensi
Secara umum, buku ini mengacu pada Standar Kompetensi dan Kompetensi
Dasar (SKKD) bagi SMK seperti berikut.
1. Menggunakan algoritma pemrograman tingkat dasar
2. Menggunakan algoritma pemrograman tingkat lanjut
3. Mengoperasikan aplikasi basis data
4. Membuat aplikasi berbasis Microsoft Access
5. Menguasai teknik elektronika dasar
6. Menguasai teknik elektronika digital
7. Membuat file dengan HTML sesuai spesifikasi
8. Menerapkan dasar-dasar pembuatan web statis tingkat dasar
9. Membuat program aplikasi menggunakan VB dan VB.NET
10. Membuat paket software aplikasi
11. Melakukan pemrograman data deskripsi (SQL – Stuctured Query Language)
tingkat dasar
12. Mengoperasikan bahasa pemrograman data deskripsi (SQL) tingkat lanjut
13. Membuat halaman web dinamis tingkat dasar

xxiii
14. Membuat halaman web dinamis tingkat lanjut
15. Membuat program aplikasi web menggunakan JSP
16. Membuat program aplikasi basis data menggunakan XML
17. Membuat program basis data menggunakan Microsoft (SQL Server)
18. Membuat program basis data menggunakan PL/SQL (Oracle)
19. Membuat program aplikasi menggunakan C++
20. Menjelaskan sistem peripheral
21. Membuat program dalam bahasa pemrograman berorientasi obyek
22. Membuat program aplikasi menggunakan Java
23. Mengoperasikan sistem operasi komputer berbasis teks dan GUI

Dalam penyajian buku ini, bab-bab tidak disusun berdasarkan SKKD, akan
tetapi disusun berdasarkan urutan materi pokok bahasan. Sehingga di beberapa bab
berisi gabungan dari beberapa standar kompetensi. Atau satu kompetensi dasar
mungkin berada tidak pada kelompok standar kompetensi seperti pada daftar SKKD,
tetapi berada pada sub bab yang lain.
Kesesuaian SKKD dan isi bab dapat dilihat pada table berikut ini.
Kode Kompetensi Kompetensi Bab Terkait
ELKA-MR.UM.001.A Menguasai Teknik Dasar Elektronika 3
Menguasai Dasar Elektronika Digital dan 3
ELKA.MR.UM.004.A
Komputer
Menggunakan algoritma pemograman tingkat 5
TIK.PR02.001.01
dasar
Menggunakan algoritma pemograman tingkat 6
TIK.PR02.002.01
lanjut
Mengoperasikan sistem operasi jaringan 4
HDW.OPR.103.(1).A
komputer berbasis teks
Mengoperasikan sistem operasi jaringan 4
HDW.OPR.104.(1).A
komputer berbasis GUI
TIK.PR02.020.01 Mengoperasikan aplikasi basis Data 10 dan 11
TIK.PR08.004.01 Membuat aplikasi Berbasis Microsoft Acces 11
Membuat dokumen dengan HTML sesuai 13
TIK.PR08.024.01
spesifikasi
Menerapkan dasar-dasar pembuatan web 13
TIK.PR08.027.01
statis tingkat dasar.
Membuat program aplikasi menggunakan VB 7
TIK.PR08.003.01
& VB.NET
TIK.PR02.016.01 Membuat paket software Aplikasi 7
Mengoperasikan bahasa pemrograman data 12
TIK.PR03.001.01
deskripsi (SQL) tingkat dasar
Mengoperasikan bahasa pemrograman data 12
TIK.PR03.002.01
deskripsi (SQL) tingkat Lanjut
Membuat Halaman Web dinamis tingkat 13
TIK.PR04.002.01
dasar

xxiv
Kode Kompetensi Kompetensi Bab Terkait
Membuat Halaman Web dinamis tingkat 13
TIK.PR04.003.01
Lanjut.
Mengoperasikan bahasa pemograman 8
TIK.PR02.009.01
berorientasi obyek
Membuat program aplikasi menggunakan 8
TIK.PR08.012.01
Java
Membuat program aplikasi menggunakan 9
TIK.PR08.001.01
C++
TIK.PR06.003.01 Menjelaskan sistem Peripheral 3
Membuat program basis data menggunakan 10 dan 12
TIK.PR08.005.01
PL/SQL
Membuat program basis data menggunakan 12
TIK.PR08.006.01
SQL Server
TIK.PR08.008.01 Membuat program aplikasi web berbasis JSP 14

C. Cara Menggunakan Buku


Buku ini secara khusus ditujukan kepada siswa dan guru SMK untuk program
keahlian RPL. Namun demikian, buku ini juga terbuka bagi pembaca umum yang
berminat dalam dunia RPL, Algoritma dan Pemrograman, Basis Data dan Internet.
Bagi siswa, buku ini dapat dijadikan buku pegangan, karena ini buku ini menyediakan
bahan-bahan pelajaran yang cukup lengkap untuk mata pelajaran selama tiga tahun
di bangku sekolah. Beberapa bagian dari buku ini mungkin memerlukan buku-buku
bantu lainnya untuk lebih memperkaya wawasan dan peningkatan kemampuan.
Sedangkan bagi guru, buku ini dapat digunakan sebagai buku referensi untuk
menyusun modul-modul ajar bagi anak didiknya.
Buku ini disusun sedemikian rupa agar siswa dapat belajar secara mandiri dan
terdorong untuk mencoba secara langsung. Oleh karena itu dalam buku ini, akan
banyak dijumpai ilustrasi baik yang berupa gambar, skema maupun listing program.
Hal ini dimaksudkan agar siswa dapat dengan mudah memahami penjelasan ataupun
penerapan suatu konsep tertentu. Bahkan pada bagian akhir bab diakhiri dengan
soal-soal latihan dari pokok bahasan pada bab tersebut.

xxv
Gambar 1.1. Tampilan desktop Microsoft Windows.

Coba kita perhatikan Gambar 1.1. di atas. Bagi pengguna komputer, gambar di
atas merupakan tampilan yang sangat dikenal. Gambar ini merupakan tampilan
desktop Sistem Operasi Microsoft Windows. Pada gambar tersebut, kita melihat
sejumlah ikon-ikon tertentu. Apabila kita klik ganda pada satu ikon maka suatu
perangkat lunak (software) tertentu akan terbuka dan dapat kita gunakan untuk
menyelesaikan suatu tugas tertentu.
Pada masa sekarang, rasanya hampir semua bidang kehidupan tersentuh
penggunaan perangkat lunak atau software. Beberapa perangkat lunak mungkin
sudah terbiasa kita gunakan atau kita lihat seperti perangkat lunak untuk memainkan
atau membuat musik, perangkat lunak untuk membantu kasir dalam penjualan
barang, perangkat lunak untuk mengetik dokumen, dan lain-lain. Perangkat lunak ini
merupakan hasil dari serangkaian proses atau kegiatan yang dikenal sebagai
Rekayasa Perangkat Lunak. Apakah sebenarnya Rekayasa Perangkat Lunak itu? Bab
ini akan memberi jawaban atas pertanyaan ini.

Rekayasa Perangkat Lunak 1


TUJUAN
Setelah mempelajari bab ini diharapkan kalian akan mampu :
o Menjelaskan pengertian perangkat lunak, program, prosedur dan
rekayasa perangkat lunak
o Memahami tujuan rekayasa perangkat lunak
o Memahami ruang lingkup rekayasa perangkat lunak
o Memahami posisi bidang rekayasa perangkat lunak pada disiplin
ilmu komputer dan keterkaitannya dengan bidang ilmu lain
o Mengetahui perkembangan ilmu rekayasa perangkat lunak
o Mengetahui profesi dan sertifikasi dalam bidang rekayasa
perangkat lunak
o Menjelaskan prinsip-prinsip pemecahan masalah dalam rekayasa
perangkat lunak

1.1. PENGERTIAN REKAYASA PERANGKAT LUNAK


Istilah Rekayasa Perangkat Lunak (RPL) secara umum disepakati sebagai
terjemahan dari istilah Software Engineering. Istilah Software Engineering mulai
dipopulerkan tahun 1968 pada Software Engineering Conference yang
diselenggarakan oleh NATO. Sebagian orang mengartikan RPL hanya sebatas pada
bagaimana membuat program komputer. Padahal ada perbedaan yang mendasar
antara perangkat lunak (software) dan program komputer.
Perangkat lunak adalah seluruh perintah yang digunakan untuk memproses
informasi. Perangkat lunak dapat berupa program atau prosedur. Program adalah
kumpulan perintah yang dimengerti oleh komputer sedangkan prosedur adalah
perintah yang dibutuhkan oleh pengguna dalam memproses informasi (O’Brien,
1999). Pengertian RPL sendiri adalah sebagai berikut:
Suatu disiplin ilmu yang membahas semua aspek produksi perangkat
lunak, mulai dari tahap awal yaitu analisa kebutuhan pengguna,
menentukan spesifikasi dari kebutuhan pengguna, disain, pengkodean,
pengujian sampai pemeliharaan sistem setelah digunakan.
Jelaslah bahwa RPL tidak hanya berhubungan dengan cara pembuatan program
komputer. Pernyataan “semua aspek produksi” pada pengertian di atas, mempunyai
arti semua hal yang berhubungan dengan proses produksi seperti manajemen proyek,
penentuan personil, anggaran biaya, metode, jadwal, kualitas sampai dengan
pelatihan pengguna merupakan bagian dari RPL.

1.2. TUJUAN REKAYASA PERANGKAT LUNAK


Secara umum tujuan RPL tidak berbeda dengan bidang rekayasa yang lain.
Mari kita perhatikan Gambar 1.2. berikut ini.

2 Pendahuluan
Kinerja

Biaya Waktu

Gambar 1.2. Tujuan RPL.

Dari Gambar 1.2 dapat diartikan bahwa bidang rekayasa akan selalu berusaha
menghasilkan output yang kinerjanya tinggi, biaya rendah dan waktu penyelesaian
yang tepat. Secara lebih khusus kita dapat menyatakan tujuan RPL adalah :
a. Memperoleh biaya produksi perangkat lunak yang rendah.
b. Menghasilkan perangkat lunak yang kinerjanya tinggi, andal dan tepat waktu.
c. Menghasilkan perangkat lunak yang dapat bekerja pada berbagai jenis
platform.
d. Menghasilkan perangkat lunak yang biaya perawatannya rendah.

1.3. RUANG LINGKUP


Sesuai definisi yang telah disampaikan sebelumnya, maka ruang lingkup RPL
dapat digambarkan sebagai berikut.

Software Software Software


Requirement Design Construction

Software
Process
Testing
Software
Engineering
Software Software
Quality Maintenance

Tools & Configuration


Management
Method Management

Gambar 1.3. Ruang lingkup RPL (Abran et.al., 2004).

Rekayasa Perangkat Lunak 3


- Software requirements berhubungan dengan spesifikasi kebutuhan dan
persyaratan perangkat lunak.
- Software design mencakup proses penentuan arsitektur, komponen, antarmuka,
dan karakteristik lain dari perangkat lunak.
- Software construction berhubungan dengan detil pengembangan perangkat
lunak, termasuk algoritma, pengkodean, pengujian, dan pencarian kesalahan.
- Software testing meliputi pengujian pada keseluruhan perilaku perangkat lunak.
- Software maintenance mencakup upaya-upaya perawatan ketika perangkat lunak
telah dioperasikan.
- Software configuration management berhubungan dengan usaha perubahan
konfigurasi perangkat lunak untuk memenuhi kebutuhan tertentu.
- Software engineering management berkaitan dengan pengelolaan dan
pengukuran RPL, termasuk perencanaan proyek perangkat lunak.
- Software engineering tools and methods mencakup kajian teoritis tentang alat
bantu dan metode RPL.
- Software engineering process berhubungan dengan definisi, implementasi,
pengukuran, pengelolaan, perubahan dan perbaikan proses RPL.
- Software quality menitikberatkan pada kualitas dan daur hidup perangkat lunak.

1.4. REKAYASA PERANGKAT LUNAK DAN DISIPLIN ILMU KOMPUTER


Disiplin ilmu komputer (Computer Science) lahir pada awal-awal tahun 1940-an
yang merupakan integrasi dari teori algoritma, logika matematika dan ditemukannya
cara penyimpanan program secara elektronik pada komputer. Sejak itu ilmu
komputer mengalami perkembangan yang terus menerus sehingga cakupannya
menjadi semakin meluas.
Cakupan pengetahuan dalam ilmu komputer seringkali didiskripsikan sebagai
suatu studi sistematis pada proses-proses algoritma yang menjelaskan dan
mentransformasikan informasi (Denning, 2000). Termasuk di sini adalah teori,
analisis, disain, efisiensi, penerapan dan aplikasinya. Ada beberapa model
pengelompokkan sub-bidang ilmu dalam disiplin ilmu komputer seperti terlihat pada
Gambar 1.4, 1.5 dan 1.6.

4 Pendahuluan
Computer
Science

Section A Section B
Komputasi Perangkat
Umum Keras

Section C Section D
Organisasi Sistem Perangkat
Komputer Lunak

Section E Section F
Data Teori
Komputasi

Section G Section H
Matematika Sistem
Komputasi Informasi

Section I Section J
Metodologi Aplikasi Komputer
Komputasi di Bidang Lain

Section K
Aspek Lain

Gambar 1.4. Klasifikasi disiplin ilmu komputer menurut ACM (1998).

Rekayasa Perangkat Lunak 5


Computer
Science

Algoritma & Bahasa


Struktur Data Pemrograman

Arsitektur Sistem Operasi


Komputer dan Jaringan

Rekayasa Basis Data &


Perangkat Lunak Pencarian Informasi

Inteligensia Buatan Grafis


dan Robotika

Interaksi Ilmu Pengetahuan


Komputer - Manusia Komputasi

Pengorganisasian Bio-Informatics
Informatika

Gambar 1.5. Klasifikasi disiplin ilmu komputer menurut Denning (2000).

6 Pendahuluan
Computer
Science

Dasar Teori
Matematika Komputasi
Komputasi

Algoritma Bahasa
dan Pemrograman
Struktur Data dan Compilers

Concurrent, Rekayasa
Parallel dan Perangkat
Sistem Terdistribusi Lunak

Komunikasi Basis Data

Intelijensia Komputer
Buatan Grafis dan
Visual

Interaksi Komputasi
Manusia - Untuk
Komputer Ilmu Pengetahuan

Gambar 1.6. Klasifikasi disiplin ilmu komputer menurut Wikipedia (2007).

Berdasarkan pengelompokkan Denning (2000) dan Wikipedia (2007), RPL


merupakan sub-bidang ilmu komputer yang setara dengan sub-bidang lainnya.
Sedangkan menurut ACM (Association for Computing Machinery), RPL merupakan
bagian dari Section D (Perangkat Lunak). Meskipun terlihat terpisah-pisah, namun
dalam penerapannya, sub-bidang RPL selalu membutuhkan dukungan dari sub-bidang
lain, terutama sub-bidang Algoritma dan Struktur Data, Bahasa Pemrograman, Basis
Data, Sistem Operasi dan Jaringan, dan Sistem Informasi.

Rekayasa Perangkat Lunak 7


1.5. REKAYASA PERANGKAT LUNAK DAN DISIPLIN ILMU LAIN
Cakupan ruang lingkup yang cukup luas, membuat RPL sangat terkait dengan
disiplin bidang ilmu lain. Tidak saja dengan sub-bidang dalam disiplin ilmu komputer
namun dengan beberapa disiplin ilmu lain di luar ilmu komputer. Hubungan
keterkaitan RPL dengan ilmu lain dapat dilihat pada Gambar 1.7.

Manajemen Matematika Ergonomika

Rekayasa
Perangkat Lunak

Manajemen Manajemen Rekayasa


Kualitas Proyek Sistem
Gambar 1.7. Keterkaitan RPL dengan bidang ilmu lain.

- Bidang ilmu manajemen meliputi akutansi, finansial, pemasaran, manajemen


operasi, ekonomi, analisis kuantitatif, manajemen sumber daya manusia,
kebijakan dan strategi bisnis.
- Bidang ilmu matematika meliputi aljabar linier, kalkulus, peluang, statistik,
analisis numerik dan matematika diskrit.
- Bidang ilmu manajemen proyek meliputi semua hal yang berkaitan dengan
proyek, seperti ruang lingkup proyek, anggaran, tenaga kerja, kualitas,
manajemen resiko, dan penjadwalan proyek.
- Bidang ilmu manajemen kualitas meliputi pengembangan sistem kualitas,
manajemen resiko dan keandalan, perbaikan kualitas, dan metode-metode
kuantitatif.
- Bidang ilmu ergonomika menyangkut hubungan (interaksi) antara manusia
dengan komponen-komponen lain dalam sistem komputer.
- Bidang ilmu rekayasa sistem meliputi teori sistem, analisis biaya-keuntungan,
pemodelan, simulasi, proses dan operasi bisnis.

1.6. PERKEMBANGAN REKAYASA PERANGKAT LUNAK


Meskipun baru dicetuskan pada tahun 1968, namun RPL telah memiliki sejarah
yang cukup panjang. Gambar 1.8 menyajikan intisari perkembangan RPL. Dari sisi
disiplin ilmu, RPL masih relatif muda dan akan terus berkembang. Arah
perkembangan yang saat ini sedang dikembangkan antara lain meliputi : Agile

8 Pendahuluan
Software Development, Experimental Software Development, Model-Driven Software
Development dan Software Product Lines.
Tahun Kejadian

1940an Komputer pertama yang membolehkan


pengguna menulis kode program langsung

1950an Generasi awal interpreter dan bahasa macro


Generasi pertama compiler

Generasi kedua compiler


1960an Komputer mainframe mulai dikomersialkan
Pengembangan perangkat lunak pesanan
Konsep Software Engineering mulai digunakan

1970an Perangkat pengembang perangkat lunak


Perangkat minicomputer komersial

1980an Perangkat Komputer Personal (PC) komersial


Peningkatan permintaan perangkat lunak

Pemrograman berorientasi obyek (OOP)


1990an Agile Process dan Extreme Programming
Peningkatan drastis kapasitas memori
Peningkatan penggunaan internet

2000an Platform interpreter modern (Java, .Net, PHP, dll)


Outsourcing

Gambar 1.8. Perkembangan RPL.

1.7. PROFESI DAN SERTIFIKASI


Profesi sebagai seorang Software Engineer mungkin masih terasa asing di
telinga orang Indonesia. Sebagian besar orang Indonesia mungkin lebih familiar
dengan sebutan Ahli Teknologi Informasi, Analis Sistem Informasi,
Programmer, Operator atau sebutan profesi lainnya. Hal ini karena adanya
kerancuan tentang istilah RPL seperti telah disebutkan di awal bab. Namun di negara-
negara yang maju dalam bidang teknologi informasi, sebutan Software Engineer telah
mulai banyak digunakan.
Sertifikasi kompetensi dalam bidang RPL, saat ini masih menjadi perdebatan di
kalangan ahli dan penyedia perangkat lunak. Sebagian besar sertifikasi dalam industri
perangkat lunak biasanya sangat spesifik untuk perangkat lunak tertentu. Sebagai
contoh, perusahaan perangkat lunak seperti Redhat Linux Inc., Adobe Inc., Oracle,

Rekayasa Perangkat Lunak 9


atau Microsoft, memberikan sertifikasi kemampuan pada seseorang yang menguasai
perangkat lunak yang diproduksinya.
ACM (Association for Computing Machinery) pernah menyelenggarakan
sertifikasi untuk program Software Engineer pada tahun 1980an, namun dihentikan
karena kurangnya peminat. IEEE (Institute of Electrical and Electronics Engineers)
telah mengeluarkan lebih dari 500 sertifikat profesi perangkat lunak. Di Canada, telah
dikeluarkan sebuah sertifikat legal untuk RPL yang disebut sebagai ISP (Information
Systems Profesional).
Saat ini, sertifikasi untuk RPL di Indonesia juga belum tersedia, namun telah
disusun Standar Kompetensi Kerja Nasional Indonesia untuk Bidang
Programmer Komputer. Meskipun belum memenuhi cakupan bidang RPL secara
keseluruhan, namun paling tidak dapat digunakan sebagai pendekatan sertifikasi
bidang RPL.

1.8. REKAYASA PERANGKAT LUNAK DAN PEMECAHAN MASALAH


Secara konsep, rekayasa perangkat lunak memiliki kedekatan dengan prinsip-
prinsip pemecahan masalah. Pemahaman tentang masalah, strategi dan proses
pemecahan masalah, serta pendekatan sistem pada pemecahan masalah akan sangat
membantu proses rekayasa perangkat lunak.

1.8.1. Masalah dan Gejala


Masalah (problem) adalah perbedaan antara kondisi yang terjadi dan kondisi
yang diharapkan atau boleh juga diartikan sebagai perbedaan antara kondisi sekarang
dengan tujuan yang diinginka. Sebagai contoh seorang siswa berharap memperoleh
nilai di atas 80 untuk ujian mata pelajaran Pemrograman C++, namun pada
kenyataannya dia hanya memperoleh nilai 60. Adanya perbedaan ini menunjukkan
adanya masalah.
Seringkali kita kesulitan membedakan
antara gejala dan masalah. Gejala adalah
tanda/petunjuk terjadinya suatu masalah.
Perhatikan seorang yang berprofesi sebagai
dokter pada Gambar 1.9. Seorang dokter dalam
usaha mengobati penyakit pasien selalu bertanya
dulu tentang gejala-gejala yang dirasakan pasien
kemudian menyimpulkan bahwa pasien
menderita penyakit tertentu dan menentukan
obat yang tepat. Pusing, demam, batuk, dan
pilek merupakan gejala atau tanda dari penyakit
flu. Apabila dokter hanya memberi obat sakit
kepala, maka penyakit flu tidak akan sembuh.
Satu masalah mungkin memiliki satu gejala tetapi
Gambar 1.9. Profesi dokter. mungkin juga lebih (perhatikan Gambar 1.10).

10 Pendahuluan
Gambar 1.10. Gejala dan masalah.

Mungkin kita bertanya-tanya apa hubungan masalah dan gejala dengan RPL.
Seperti telah disampaikan di awal bab, perangkat lunak yang merupakan hasil dari
RPL merupakan alat bantu yang digunakan untuk menyelesaikan tugas / masalah
tertentu. Apabila kita tidak mengetahui dengan benar masalahnya mustahil kita dapat
menentukan bagaimana menyelesaikannya. Dan, untuk mengetahui dengan baik
masalah, maka pengetahuan tentang gejala dari masalah menjadi sangat penting.

1.8.2. Tipe-tipe Masalah


Masalah dapat dikelompokkan seperti pada Gambar 1.11.

Gambar 1.11. Tipe-tipe masalah (Deek et al, 2005).

- Masalah pemenuhan standar


Tipe masalah dalam kelompok ini adalah masalah-masalah yang berhubungan
dengan pencapaian standar yang telah ditentukan dalam sebuah organisasi.
Biasanya tujuan seperti ini berlaku dalam jangka yang relative panjang.
Rekayasa Perangkat Lunak 11
- Masalah pemilihan alternative
Masalah dalam kelompok ini berhubungan dengan bagaimana memilih solusi
terbaik dari berbagai alternative berdasarkan kriteria-kriteria tertentu.
Permasalahan ini seringkali kita jumpai dalam kehidupan sehari-hari, seperti
bagaimana memilih sekolah yang tepat, memilih lokasi tempat tinggal,
memilih bidang pekerjaan. Masing-masing alternatif dan kriteria memiliki
bobot yang telah disepakati.
- Masalah pemenuhan kepuasan konsumen
Pada organisasi-organisasi yang bersifat profit (mencari keuntungan),
masalah-masalah pada kelompok ini merupakan tipe yang seringkali muncul.
Konsumen memiliki berbagai macam keinginan yang satu sama lain berbeda.
Memenuhi seluruh keinginan konsumen sangat tidak mungkin dan sangat
memberatkan sebuah organisasi. Oleh karena itu perlu dicari pemecahan
yang sama-sama menguntungkan, baik bagi konsumen maupun organisasi
tersebut.
- Masalah pencapaian tujuan
Tipe ini mirip dengan tipe pertama (masalah pemenuhan standar). Yang
berbeda adalah, pada tipe ini tujuan yang ingin dicapai dapat berubah-ubah
dan bersifat jangka pendek.

1.8.3. Pemecahan Masalah


Pemecahan masalah adalah sebuah proses dimana suatu situasi diamati
kemudian bila ditemukan ada masalah dibuat penyelesaiannya dengan cara
menentukan masalah, mengurangi atau menghilangkan masalah atau mencegah
masalah tersebut terjadi. Ada banyak urutan proses pemecahan masalah yang
diajukan oleh para ahli, salah satunya seperti terlihat pada Gambar 1.12.
Pada gambar 1.12 terlihat serangkaian tahapan proses yang berbeda yang
dapat digunakan dalam berbagai tingkatan, tergantung dari tipe dan sifat masalahnya.
Masalah yang berbeda membutuhkan penggunaan cara yang berbeda, bahkan
mungkin urutan yang berbeda. Tahapan kritis dari proses pemecahan masalah adalah
Pendefinisian Masalah. Apabila masalah tidak cukup jelas didefinisikan maka
tahapan-tahapan berikut sulit untuk dijalankan. Bahkan apabila dipaksakan,
kemungkinan besar penyelesaian yang tepat tidak akan diperoleh.

12 Pendahuluan
Gambar 1.12. Proses pemecahan masalah (diadopsi dari Deek et al, 2005)

Secara umum proses pemecahan masalah dapat dilakukan dengan empat


tahapan utama yaitu :
• Memahami dan mendefinisikan masalah
Bagian ini merupakan bagian yang sangat penting karena menjadi awal dari
seluruh proses pemecahan masalah. Tujuan pada bagian ini adalah memahami
masalah dengan baik dan menghilangkan bagian-bagian yang dirasa kurang
penting.
• Membuat rencana untuk pemecahan masalah
Pada bagian ini ada dua kegiatan penting yaitu :
a) mencari berbagai cara penyelesaian yang mungkin diterapkan
b) membuat rencana pemecahan masalah
Penyelesaian suatu masalah biasanya tidak hanya satu tapi mungkin bisa
beberapa macam. Sebagai ilustrasi, apabila kita berada di kota Surabaya dan
ingin pergi ke Jakarta, maka banyak cara yang mungkin bisa dilakukan, misalnya
kita bisa menempuh dengan angkutan darat, laut atau udara. Dengan angkutan
darat kita bisa menggunakan kereta api, bus atau angkutan yang lain. Jalurnya
pun kita bisa lewat jalur utara, tengah atau selatan. Jadi banyak sekali cara
penyelesaian yang bisa kita kembangkan. Masing-masing mempunyai
karakteristik sendiri-sendiri. Dari sekian banyak penyelesaian ini kita harus
memilih satu yang berdasarkan persyaratan tertentu merupakan cara yang paling
baik untuk menyelesaikan permasalahan. Setelah terpilih, maka kita dapat
membuat rencana kasar (outline) penyelesaian masalah dan membagi masalah

Rekayasa Perangkat Lunak 13


dalam bagian-bagian yang lebih kecil. Rencana kasar (outline) penyelesaian
masalah hanya berisi tahapan-tahapan utama penyelesaian masalah.
• Merancang dan menerapkan rencana untuk memperoleh cara penyelesaian
Pada bagian ini rencana kasar penyelesaian masalah diperbaiki dan diperjelas
dengan pembagian dan urutan rinci yang harus ditempuh dalam penyelesaian
masalah.
• Memeriksa dan menyampaikan hasil dari pemecahan masalah
Bagian ini bertujuan untuk memeriksa apakah akurasi (ketepatan) hasil dari cara
yang dipilih telah memenuhi tujuan yang diinginkan. Selain itu juga untuk
melihat bagaimana daya guna dari cara yang dipilih yang dipilih.

1.9. RINGKASAN
• Perangkat lunak adalah seluruh perintah yang digunakan untuk
memproses informasi
o Program adalah kumpulan perintah yang dimengerti oleh
komputer
o Prosedur adalah perintah yang dibutuhkan oleh pengguna dalam
memproses informasi
• RPL adalah suatu disiplin ilmu yang membahas semua aspek produksi
perangkat lunak, mulai dari tahap awal yaitu analisa kebutuhan
pengguna, menentukan spesifikasi dari kebutuhan pengguna, disain,
pengkodean, pengujian sampai pemeliharaan sistem setelah digunakan.
• Tujuan RPL adalah menghasilkan perangkat lunak dengan kinerja tinggi,
tepat waktu, berbiaya rendah, dan multiplatform.
• RPL merupakan sub bidang ilmu komputer yang dalam penerapannya
membutuhkan dukungan baik dari sub bidang ilmu komputer lainnya
maupun bidang-bidang ilmu lain.
• Sertifikasi untuk bidang RPL belum tersedia, namun mengacu pada
bidang Programmer
• Masalah (problem) adalah perbedaan antara kondisi yang terjadi dan
kondisi yang diharapkan dan Gejala adalah tanda/petunjuk terjadinya
suatu masalah.
• Tipe-tipe masalah :
o Masalah pemenuhan standar
o Masalah pemilihan alternatif
o Masalah pemenuhan kepuasan konsumen
o Masalah pencapaian tujuan

14 Pendahuluan
• Pemecahan masalah adalah sebuah proses dimana suatu situasi
diamati kemudian bila ditemukan ada masalah dibuat penyelesaiannya
dengan cara menentukan masalah, mengurangi atau menghilangkan
masalah atau mencegah masalah tersebut terjadi.
• Tahapan utama pemecahan masalah :
o Memahami dan mendefinisikan masalah
o Membuat rencana untuk pemecahan masalah
o Merancang dan menerapkan rencana untuk memperoleh cara
penyelesaian
o Memeriksa dan menyampaikan hasil dari pemecahan masalah

1.10. SOAL-SOAL LATIHAN


1. Sebutkan pengertian dari perangkat lunak dan rekayasa perangkat lunak.
2. Apakah perbedaan antara program komputer dan prosedur?
3. Sebutkan lima sub bidang ilmu komputer berdasarkan pengelompokkan
Denning.
4. Sebutkan lima bidang ilmu lain yang erat kaitannya dengan rekayasa
perangkat lunak.
5. Apakah gejala dan masalah itu?

Rekayasa Perangkat Lunak 15


16 Pendahuluan
Ketika kita bekerja dengan
komputer seperti pada Gambar 2.1.,
kita membutuhkan serangkaian tahapan
dan cara-cara tertentu agar dapat
menghasilkan sesuatu yang menjadi
harapan kita. Demikian juga dalam
rekayasa perangkat lunak, diperlukan
tahapan-tahapan kerja yang harus
dilalui. Rekayasa perangkat lunak yang
sukses tidak hanya membutuhkan
kemampuan komputasi seperti
algoritma, pemrograman, dan basis
data yang kuat, namun juga perlu
penentuan tujuan yang baik, identifikasi
(Sumber: Clip Art Microsoft Office 2007)
cara penyelesaian, metode
Gambar 2.1. Bekerja dengan komputer. pengembangan, urutan aktifitas,
identifikasi kebutuhan sumberdaya, dan
faktor-faktor lain. Hal-hal seperti ini terkait dengan apa yang disebut dengan metode
rekayasa perangkat lunak.
Isi dari bab ini tidak termasuk dalam standar kompetensi bidang keahlian RPL.
Namun penulis memandang perlu disampaikan agar kalian dapat mengetahui
bagaimana sebenarnya rekayasa perangkat lunak dilakukan dan metode-metode apa
saja yang biasa digunakan. Beberapa bagian dari bab ini mungkin agak sulit
dipahami, sehingga peran guru dalam membantu menjelaskan akan sangat
diperlukan. Rangkuman bab disampaikan di bagian akhir dari uraian isi.

Rekayasa Perangkat Lunak 17


TUJUAN
Setelah mempelajari bab ini diharapkan kalian akan mampu :
o Memahami karakteristik umum model proses dalam rekayasa
perangkat lunak.
o Menyebutkan beberapa model rekayasa perangkat lunak .
o Mengetahui prinsip-prinsip dari metode waterfall, prototyping,
dan unified process.
o Memahami tahapan-tahapan dalam rekayasa perangkat lunak.

2.1. MODEL PROSES REKAYASA PERANGKAT LUNAK


Pada rekayasa perangkat lunak, banyak model yang telah dikembangkan
untuk membantu proses pengembangan perangkat lunak. Model-model ini pada
umumnya mengacu pada model proses pengembangan sistem yang disebut System
Development Life Cycle (SDLC) seperti terlihat pada Gambar 2.2.

Gambar 2.2. System Development Life Cycle (SDLC).

Setiap model yang dikembangkan mempunyai karakteristik sendiri-sendiri.


Namun secara umum ada persamaan dari model-model ini, yaitu:
• Kebutuhan terhadap definisi masalah yang jelas. Input utama dari setiap model
pengembangan perangkat lunak adalah pendefinisian masalah yang jelas.
Semakin jelas akan semakin baik karena akan memudahkan dalam penyelesaian
masalah. Oleh karena itu pemahaman masalah seperti dijelaskan pada Bab 1,
merupakan bagian penting dari model pengembangan perangkat lunak.
• Tahapan-tahapan pengembangan yang teratur. Meskipun model-model
pengembangan perangkat lunak memiliki pola yang berbeda-beda, biasanya
model-model tersebut mengikuti pola umum analysis – design – coding – testing
- maintenance.
• Stakeholder berperan sangat penting dalam keseluruhan tahapan
pengembangan. Stakeholder dalam rekayasa perangkat lunak dapat berupa
18 Metode Rekayasa Perangkat Lunak
pengguna, pemilik, pengembang, pemrogram dan orang-orang yang terlibat
dalam rekayasa perangkat lunak tersebut.
• Dokumentasi merupakan bagian penting dari pengembangan perangkat lunak.
Masing-masing tahapan dalam model biasanya menghasilkan sejumlah tulisan,
diagram, gambar atau bentuk-bentuk lain yang harus didokumentasi dan
merupakan bagian tak terpisahkan dari perangkat lunak yang dihasilkan.
• Keluaran dari proses pengembangan perangkat lunak harus bernilai ekonomis.
Nilai dari sebuah perangkat lunak sebenarnya agak susah di-rupiah-kan. Namun
efek dari penggunaan perangkat lunak yang telah dikembangkan haruslah
memberi nilai tambah bagi organisasi. Hal ini dapat berupa penurunan biaya
operasi, efisiensi penggunaan sumberdaya, peningkatan keuntungan organisasi,
peningkatan “image” organisasi dan lain-lain.
Ada banyak model pengembangan perangkat lunak, antara lain The Waterfall
Model, Joint Application Development (JAD), Information Engineering (IE), Rapid
Application Development (RAD) termasuk di dalamnya Prototyping, Unified Process
(UP), Structural Analysis and Design (SAD) dan Framework for the Application of
System thinking (FAST). Pada buku ini akan dibahas tiga model pengembangan yaitu
The Waterfall Model, Prototyping, dan Unified Processs (UP).

2.1.1. The waterfall model


Model siklus hidup (life cycle model) adalah model utama dan dasar dari
banyak model. Salah satu model yang cukup dikenal dalam dunia rekayasa perangkat
lunak adalah The Waterfall Model. Ada 5 tahapan utama dalam The Waterfall Model
seperti terlihat pada Gambar 2.3. Disebut waterfall (berarti air terjun) karena
memang diagram tahapan prosesnya mirip dengan air terjun yang bertingkat.
Tahapan-tahapan dalam The Waterfall Model secara ringkas adalah sebagai
berikut:
• Tahap investigasi dilakukan untuk menentukan apakah terjadi suatu masalah
atau adakah peluang suatu sistem informasi dikembangkan. Pada tahapan ini
studi kelayakan perlu dilakukan untuk menentukan apakah sistem informasi yang
akan dikembangkan merupakan solusi yang layak
• Tahap analisis bertujuan untuk mencari kebutuhan pengguna dan organisasi
serta menganalisa kondisi yang ada (sebelum diterapkan sistem informasi yang
baru).
• Tahap disain bertujuan menentukan spesifikasi detil dari komponen-komponen
sistem informasi (manusia, hardware, software, network dan data) dan produk-
produk informasi yang sesuai dengan hasil tahap analisis.
• Tahap implementasi merupakan tahapan untuk mendapatkan atau
mengembangkan hardware dan software (pengkodean program), melakukan
pengujian, pelatihan dan perpindahan ke sistem baru.

Rekayasa Perangkat Lunak 19


• Tahapan perawatan (maintenance) dilakukan ketika sistem informasi sudah
dioperasikan. Pada tahapan ini dilakukan monitoring proses, evaluasi dan
perubahan (perbaikan) bila diperlukan.

Gambar 2.3. The Waterfall Model

2.1.2. Prototyping model


Prototyping adalah salah satu pendekatan dalam rekayasa perangkat lunak
yang secara langsung mendemonstrasikan bagaimana sebuah perangkat lunak atau
komponen-komponen perangkat lunak akan bekerja dalam lingkungannya sebelum
tahapan konstruksi aktual dilakukan (Howard, 1997).
Prototyping model dapat diklasifikasikan menjadi beberapa tipe seperti terlihat
pada gambar 2.4.

20 Metode Rekayasa Perangkat Lunak


Gambar 2.4. Klasifikasi prototyping model (Harris, 2003)

• Reusable prototype :
Prototype yang akan ditransformasikan menjadi produk final.
• Throwaway prototype :
Prototype yang akan dibuang begitu selesai menjalankan maksudnya.
• Input/output prototype :
Prototype yang terbatas pada antar muka pengguna (user interface).
• Processing prototype :
Prototype yang meliputi perawatan file dasar dan proses-proses transaksi.
• System prototype :
Prototype yang berupa model lengkap dari perangkat lunak.
Tahap-tahap dalam prototyping boleh dikata merupakan tahap-tahap yang
dipercepat. Strategi utama dalam prototyping adalah kerjakan yang mudah terlebih
dahulu dan sampaikan hasil kepada pengguna sesegera mungkin. Harris (2003)
membagi prototyping dalam enam tahapan seperti terlihat pada gambar 2.5.
Tahapan-tahapan secara ringkas dapat dijelaskan sebagai berikut:
• Identifikasi kandidat prototyping. Kandidat dalam kasus ini meliputi user
interface (menu, dialog, input dan output), file-file transaksi utama, dan fungsi-
fungsi pemrosesan sederhana.

Rekayasa Perangkat Lunak 21


• Rancang bangun prototype dengan bantuan software seperti word processor,
spreadsheet, database, pengolah grafik, dan software CASE (Computer-Aided
System Engineering).
• Uji prototype untuk memastikan prototype dapat dengan mudah dijalankan untuk
tujuan demonstrasi.
• Siapkan prototype USD (User’s System Diagram) untuk mengidentifikasi bagian-
bagian dari perangkat lunak yang di-prototype-kan.
• Evaluasi dengan pengguna untuk mengevaluasi prototype dan melakukan
perubahan jika diperlukan.
• Transformasikan prototype menjadi perangkat lunak yang beroperasi penuh
dengan melakukan penghilangan kode-kode yang tidak dibutuhkan, penambahan
program-program yang memang dibutuhkan dan perbaikan dan pengujian
perangkat lunak secara berulang.

Gambar 2.5. Tahapan-tahapan prototyping model (Harris, 2003)

22 Metode Rekayasa Perangkat Lunak


2.1.3. Unified Process dan Unified Modeling Language
Unified Process (UP) atau kadang disebut sebagai Unified Software
Development Process (USDP) adalah kerangka proses pengembangan yang bersifat
use-case-driven, berpusat pada arsitektur perangkat lunak, interatif dan tumbuh-
kembang (Alhir, 2005). Kerangka pengembangan ini termasuk baru dalam
metodologi pengembangan perangkat lunak. UP dapat diaplikasikan pada berbagai
skala proyek, mulai dari skala kecil sampai dengan skala besar.
Daur hidup UP secara umum akan tampak seperti pada bagan di Gambar 2.6.
Bagan ini biasa disebut sebagai “hump chart”. Pada bagan ini terlihat ada empat
tahap pengembangan yaitu inception, elaboration, construction dan transition. Selain
itu tampak pula sejumlah aktivitas (disciplines) yang harus dilakukan sepanjang
pengembangan perangkat lunak, yaitu, business modeling, requirements, analysis and
design, implementation, test. Tahap dan aktivitas tersebut akan dilakukan secara
iteratif (Ambler, 2005).

Gambar 2.6. RUP Life Cycle (Ambler, 2005).

Penjelasan singkat untuk empat tahapan dalam UP adalah sebagai berikut:


• Inception. Tahapan ini merupakan tahapan paling awal dimana aktivitas
penilaian terhadap sebuah proyek perangkat lunak dilakukan. Tujuannya
adalah untuk mendapatkan kesepakatan dari stakeholder sehubungan dengan
tujuan dan dana proyek.

Rekayasa Perangkat Lunak 23


• Elaboration. Tujuan dari tahap ini adalah untuk mendapatkan gambaran
umum kebutuhan, persyaratan dan fungsi-fungsi utama perangkat lunak. Hal
ini penting untuk mengetahui secara lebih baik resiko-resiko proyek, baik
meliputi resiko arsitektur perangkat lunak, perencanaan, maupun
implementasi. Pada tahap ini telah dimulai rancang bangun perangkat lunak
secara iterative melalui aktivitas-aktivitas seperti business modeling,
requirements, analysis dan design meskipun baru pada tahap awal.
• Construction. Tujuan dari tahapan ini adalah membangun perangkat lunak
sampai dengan saat perangkat lunak tersebut siap digunakan. Titik berat
tahapan ini adalah pada penentuan tingkat prioritas kebutuhan / persyaratan,
melengkapi spesifikasinya, analisis lebih dalam, disain solusi yang memenuhi
kebutuhan dan persyaratan, pengkodean dan pengujian perangkat lunak.
Jika dimungkinkan versi awal dari perangkat lunak diuji cobakan untuk
mendapatkan masukan dari pengguna.
• Transition. Tahap ini difokuskan pada bagaimana menyampaikan perangkat
lunak yang sudah jadi pada pengguna. Perangkat lunak akan secara resmi
diuji oleh baik oleh penguji (tester) yang kompeten maupun oleh pengguna.
Beberapa aktivitas seperti pemindahan pusat data dan pelatihan pengguna
dan staf pendukung harus dilakukan pada tahap ini.
Dalam pengembangan perangkat lunak dengan menggunakan UP, maka tidak
lepas dari penggunaan notasi-notasi yang biasa disebut sebagai UML (Unified
Modeling Language). Meskipun UP mensyaratkan penggunaan UML, namun UML
sendiri dapat digunakan pada berbagai metodologi yang lain bahkan dapat digunakan
pada bidang selain sistem informasi. UML adalah bahasa pemodelan standar atau
kumpulan teknik-teknik pemodelan untuk men-spesifikasi, mem-visualisasi, meng-
konstruksi dan mendokumentasi hasil kerja dalam pengembangan perangkat lunak
(Fowler, 2004). UML lahir dari penggabungan banyak bahasa pemodelan grafis
berorientasi obyek yang berkembang pesat pada akhir tahun 1980an dan awal
1990an.
Secara sederhana UML digunakan untuk menggambar sketsa sistem.
Pengembang menggunakan UML untuk menyampaikan beberapa aspek dari sebuah
perangkat lunak melalui notasi grafis. UML mendefinisikan notasi dan semantik.
Notasi merupakan sekumpulan bentuk khusus yang memiliki makna tertentu untuk
menggambarkan berbagai diagram piranti lunak dan semantik mendefinisikan
bagaimana bentuk-bentuk tersebut dapat dikombinasikan. Ada beberapa jenis
diagram yang disediakan dalam UML, antara lain adalah:
• Use-case diagram. Diagram ini berguna untuk menggambarkan interaksi
antara pengguna dengan sebuah perangkat lunak
• Activity diagram. Diagram ini berguna untuk menggambarkan prosedur-
prosedur perilaku perangkat lunak.
• Class diagram. Diagram ini berguna untuk menggambarkan class, fitur, dan
hubungan-hubungan yang terjadi. Pada diagram ini pendekatan berorientasi
obyek memegang peranan yang sangat penting.

24 Metode Rekayasa Perangkat Lunak


• Sequence diagram. Diagram ini berguna untuk menggambarkan interaksi
antar obyek dengan penekanan pada urutan proses atau kejadian.
• State machine diagram. Diagram ini digunakan untuk menggambarkan
bagaimana suatu kejadian mengubah obyek selama masa hidup obyek
tersebut.
• Component diagram. Diagram ini berguna untuk menggambarkan struktur
dan koneksi komponen.

2.2. TAHAPAN REKAYASA PERANGKAT LUNAK


Seperti telah disebutkan, meskipun dalam pendekatan berbeda-beda, namun
model-model di atas memiliki kesamaan, yaitu menggunakan pola tahapan analysis –
design – coding(construction) – testing – maintenance.

2.2.1. Analisis
Analisis sistem adalah sebuah teknik pemecahan masalah yang menguraikan
sebuah sistem menjadi komponen-komponennya dengan tujuan mempelajari
seberapa bagus komponen-komponen tersebut bekerja dan berinteraksi untuk meraih
tujuan mereka.
Analisis mungkin adalah bagian terpenting dari proses rekayasa perangkat
lunak. Karena semua proses lanjutan akan sangat bergantung pada baik tidaknya
hasil analisis. Tahapan-tahapan dalam analisis rekayasa perangkat lunak secara
ringkas dapat dilihat pada Gambar 2.7.
Ada satu bagian penting yang biasanya dilakukan dalam tahapan analisis yaitu
pemodelan proses bisnis. Model proses adalah model yang memfokuskan pada
seluruh proses di dalam sistem yang mentransformasikan data menjadi informasi
(Harris, 2003). Model proses juga menunjukkan aliran data yang masuk dan keluar
pada suatu proses. Biasanya model ini digambarkan dalam bentu Diagram Arus Data
(Data Flow Diagram / DFD). DFD meyajikan gambaran apa yang manusia, proses dan
prosedur lakukan untuk mentransformasi data menjadi informasi.

Rekayasa Perangkat Lunak 25


Gambar 2.7. Tahapan dan aktifitas dalam analisis.

26 Metode Rekayasa Perangkat Lunak


Umumnya ada empat notasi yang sering digunakan dalam DFD seperti tampak
Gambar 2.8.

External Entity melambangkan sumber data (dari mana


data berasal) atau penerima informasi (tujuan akhir dari
data). Contoh external entity antara lain konsumen
yang memesan suatu produk, manajer yang
External mengevaluasi laporan penjualan mingguan, dan lain-
Entitiy lain.

Proses adalah serangkaian langkah yang dilakukan


untuk memanipulasi data, misalnya pengumpulan,
pengurutan, pemilihan, pelaporan, peringkasan, analisis
dan lain-lain.

Process

Data store adalah tempat untuk menyimpan data untuk


digunakan kemudian. Nama yang pada data store ini
merupakan abstraksi dari data yang disimpan. Namun
Data Store
detil / item data apa saja yang ada, bagaimana cara
akses, atau bagaimana mengorganisasinya tidak
dijelaskan dalam notasi ini.

Data flow menunjukkan aliran data dari satu tempat ke


Data Flow tempat lain. Perpindahan data ini dapat dari external
entity ke proses, antar proses satu dengan yang lain,
dari proses ke data store. Dalam penggambarannya
setiap data flow harus diberi label yang menunjukkan
data apa yang mengalir.

Gambar 2.8. Notasi pada DFD.

Dalam pembuatan DFD ada beberapa tahapan yang dilakukan secara


berurutan. Gambar 2.9. menunjukkan urutan tahapan tersebut.

Rekayasa Perangkat Lunak 27


Gambar 2.9. Tahapan pembuatan DFD.

Context diagram adalah DFD ruang lingkup dari sistem yang menunjukkan
batas-batas sistem, external entitiy yang berinteraksi dengan sistem dan aliran data
utama antara external entity dengan sistem. Context diagram menggambarkan
keseluruhan sistem dalam suatu proses tunggal. Gambar 2.10 menunjukkan sebuah
contoh context diagram.

Gambar 2.10. Context diagram sistem pemesanan makanan (Hoffer et al., 2002).

Context diagram pada Gambar 2.10 tampak hanya ada satu proses tunggal
yang merepresentasikan sistem yang dimodelkan. Pada proses ini diberi notasi angka
0 untuk menunjukkan ini adalah level paling abstrak dari sistem. Selain itu ada tiga
external entity yaitu customer, kitchen dan restaurant manager. Ketiganya dapat

28 Metode Rekayasa Perangkat Lunak


berperan sebagai sumber data (dalam contoh di atas adalah customer) atau sebagai
penerima informasi (dalam contoh di atas customer, kitchen, dan restaurant
manager). Data flow yang tampak pada gambar menunjukkan ada satu data flow
yang masuk ke sistem dan ada tiga data flow yang keluar dari sistem. Masing-masing
data flow diberi label yang menunjukkan data apa yang sedang mengalir.
Setelah context diagram terbentuk dengan benar maka langkah selanjutnya
adalah merinci context diagram tersebut dalam DFD Level 0. DFD Level 0 adalah DFD
yang merepresentasikan proses-proses, data flow dan data storage utama di dalam
sistem. DFD Level 0 ini akan digunakan sebagai dasar untuk membangun DFD yang
level dibawahnya (Level 1, 2, 3, .. dst) atau biasa disebut sebagai dekomposisi DFD.
Gambar 3.10 merupakan DFD level 0 dari context-diagram pada gambar 2.11.

Gambar 2.11. DFD Level 0.

Pada gambar 2.11 tampak adanya pemecahan pada proses dari yang semula
hanya satu menjadi empat. Masing-masing proses diberi nomor kode 1.0, 2.0, 3.0
dan 4.0. Jumlah external entity harus tetap yaitu 3 demikian pula data flow yang
keluar dan masuk (input dan output) ke dalam sistem harus sama dengan pada
context diagram. Sedangkan data flow yang berada di dalam sistem (yang mengalir
antar proses dan atau data storage) tergantung pada proses dan data storage yang
terlibat. Ada dua data storage yaitu Goods Sold File dan Inventory File. Kedua data

Rekayasa Perangkat Lunak 29


storage ini digunakan untuk menyimpan data dari suatu proses. Data ini juga akan
dibaca / diakses oleh proses yang lain. Sebagai contoh data storage Inventory File
berisi data hasil proses 3.0 (Update Inventory File). Data ini akan digunakan proses
4.0 (Produce Management Reports) untuk membuat laporan yang akan disampaikan
pada Restaurant Manager.
DFD level berikutnya yaitu level 1, 2 dan seterusnya diperlukan apabila level
sebelumnya dirasa kurang detil. Sebagai contoh apabila DFD level 0 (Gambar 14.12)
dirasa belum cukup detil menunjukkan arus data yang mengalir, maka dapat dibuat
detilnya pada DFD level 1. Bagian yang harus didetilkan biasanya adalah proses.
Detil pada level berikutnya, mungkin pada semua proses atau hanya pada proses-
proses tertentu saja. DFD pada level 0 maupun level di bawahnya memiliki kesamaan
aturan yang tersaji berikut pada tabel berikut ini.
Tabel 2.1. Aturan-aturan dalam DFD
Kelompok Aturan
Umum • input-input ke suatu process akan selalu berbeda dengan output-
outputnya
• obyek obyek (External Entity, Process, Data Storage, dan Data Flow)
yang ada pada suatu DFD selalu memiliki nama yang unik
External Entity • nama yang dipakai pada External Entity selalu menggunakan kata
benda
• data tidak boleh mengalir secara langsung dari External Entity yang
satu ke External Entity yang lain
Process • nama yang dipakai pada Process selalu menggunakan kata kerja
• tidak ada Process yang hanya menghasilkan output
• tidak ada Process yang hanya menerima input
Data Storage • nama yang dipakai pada Data Storage selalu menggunakan kata
benda
• data tidak boleh mengalir secara langsung dari Data Storage yang
satu ke Data Storage yang lain
• data tidak boleh mengalir secara langsung dari External Entity ke
Data Storage demikian juga sebaliknya.
Data Flow • nama yang dipakai pada Data Flow selalu menggunakan kata benda
• Data Flow di antara dua notasi hanya memiliki satu arah aliran
• Percabangan (fork) menunjukkan adanya data yang persis sama yang
mengalir dari suatu tempat ke dua atau lebih tempat yang lain
• Penggabungan (join) menunjukkan adanya data yang persis sama
yang mengalir dua atau lebih tempat menuju satu tempat yang lain
• Data Flow menuju Data Storage berarti terjadi update data
• Data Flow dari Data Storage berarti terjadi pembacaan / pengambilan
data

2.2.2. Disain
Disain perangkat lunak adalah tugas, tahapan atau aktivitas yang difokuskan
pada spesifikasi detil dari solusi berbasis computer (Whitten et al, 2004).

30 Metode Rekayasa Perangkat Lunak


Disain perangkat lunak sering juga disebut sebagai physical design. Jika
tahapan analisis sistem menekankan pada masalah bisnis (business rule), maka
sebaliknya disain perangkat lunak fokus pada sisi teknis dan implementasi sebuah
perangkat lunak (Whitten et al, 2004).
Output utama dari tahapan disain perangkat lunak adalah spesifikasi disain.
Spesifikasi ini meliputi spesifikasi disain umum yang akan disampaikan kepada
stakeholder sistem dan spesifikasi disain rinci yang akan digunakan pada tahap
implementasi. Spesifikasi disain umum hanya berisi gambaran umum agar
stakeholder sistem mengerti akan seperti apa perangkat lunak yang akan dibangun.
Biasanya diagram USD tentang perangkat lunak yang baru merupakan point penting
dibagian ini. Spesifikasi disain rinci atau kadang disebut disain arsitektur rinci
perangkat lunak diperlukan untuk merancang sistem sehingga memiliki konstruksi
yang baik, proses pengolahan data yang tepat dan akurat, bernilai, memiliki aspek
user friendly dan memiliki dasar-dasar untuk pengembangan selanjutnya.
Desain arsitektur ini terdiri dari desain database, desain proses, desain user
interface yang mencakup desain input, output form dan report, desain hardware,
software dan jaringan. Desain proses merupakan kelanjutan dari pemodelan proses
yang dilakukan pada tahapan analisis.

2.2.3. Konstruksi
Konstruksi adalah tahapan menerjemahkan hasil disain logis dan fisik ke
dalam kode-kode program computer. Buku ini sebagian besar berisi tentang bagian
ini.

2.2.4. Pengujian
Pengujian sistem melibatkan semua kelompok pengguna yang telah
direncanakan pada tahap sebelumnya. Pengujian tingkat penerimaan terhadap
perangkat lunak akan berakhir ketika dirasa semua kelompok pengguna menyatakan
bisa menerima perangkat lunak tersebut berdasarkan criteria-kriteria yang telah
ditetapkan.

2.2.5. Perawatan dan Konfigurasi


Ketika sebuah perangkat lunak telah dianggap layak untuk dijalankan, maka
tahapan baru menjadi muncul yaitu perawatan perangkat lunak. Ada beberapa tipe
perawatan yang biasa dikenal dalam dunia perangkat lunak seperti terlihat pada
diagram di Gambar 2.12.

Rekayasa Perangkat Lunak 31


Gambar 3.12. Tipe-tipe perawatan.

• Tipe perawatan corrective dilakukan jika terjadi kesalahan atau biasa dikenal
sebagai bugs. Perawatan bisa dilakukan dengan memperbaiki kode program,
menambah bagian yang dirasa perlu atau malah menghilangkan bagian-
bagian tertentu.
• Tipe perawatan routine biasa juga disebut preventive maintenance dilakukan
secara rutin untuk melihat kinerja perangkat lunak ada atau tidak ada
kesalahan.
• Tipe perawatan sistem upgrade dilakukan jika ada perubahan dari komponen-
komponen yang terlibat dalam perangkat lunak tersebut. Sebagai contoh
perubahan platform sistem operasi dari versi lama ke versi baru menyebabkan
perangkat lunak harus diupgrade.

2.3. RINGKASAN
• Model-model rekayasa perangkat lunak pada umumnya mengacu pada model
proses pengembangan sistem yang disebut System Development Life
Cycle (SDLC).
• Model pengembangan perangkat lunak yang sekarang umum digunakan
adalah The Waterfall Model, Prototyping, dan Unified Process (UP).
• Tahapan-tahapan utama dalam rekayasa perangkat lunak meliputi : analisis,
disain, konstruksi, pengujian dan perawatan.

32 Metode Rekayasa Perangkat Lunak


2.4. SOAL-SOAL LATIHAN
1. Sebutkan tahapan-tahapan dalam System Developmen Life Cycle (SDLC)
2. Sebutkan persamaan karakteristik yang dimiliki oleh model-model
pengembangan perangkat lunak.
3. Sebutkan lima model pengembangan perangkat lunak yang anda ketahui.
4. Apakah yang dimaksud tahapan konstruksi pada rekayasa perangkat lunak?
5. Gambarkan notasi-notasi dalam Data Flow Diagram yang anda ketahui.

Rekayasa Perangkat Lunak 33


34 Metode Rekayasa Perangkat Lunak
Gambar 3.1. Rangkaian dan perangkat elektronik.

Kalau kalian pernah membuka atau melihat-lihat bagian dalam sebuah


perangkat elektronik, maka kalian akan menjumpai kondisi yang mirip dengan Gambar
3.1. di atas. Ada papan circuit, kabel-kabel yang saling berhubungan, dan perangkat
elektronik lainnya. Perangkat elektronik seperti inilah yang juga menyusun sebuah
perangkat komputer. Sehingga pemahaman tentang elektronika, elektronika digital
dan sistem komputer menjadi penting bagi kalian yang ingin berkecimpung dalam
dunia rekayasa perangkat lunak.
Bab ini akan membahas dua standar kompetensi, yaitu teknik elektronika dasar
dan teknik elektronika digital, terutama yang berhubungan dengan sistem komputer.
Ada dua kompetensi dasar pada standar kompetensi teknik elektronika dasar, yaitu
memahami prinsip-prinsip elektronika dasar dan mengetahui komponen-komponen
elektronika dasar. Sedangkan standar kompetensi untuk teknik elektronika digital
terdiri dari kompetensi dasar menguasai teknik elektronika digital dan menguasai
teknik elektronika digital untuk komputer. Dalam penyajian pada buku ini, setiap
kompetensi dasar memuat uraian materi. Ringkasan diletakkan pada akhir bab.
Sebelum mempelajari kompetensi ini ingatlah kembali tentang teknik elektronika
dasar dan materi-materi pendukung dari mata pelajaran matematika.

Rekayasa Perangkat Lunak 35


TUJUAN
Setelah mempelajari bab ini diharapkan kalian akan mampu :
o Menguasai konsep elektronika dasar.
o Mengetahui komponen-komponen elektronika.
o Menguasai konsep eletronika digital.
o Menguasai elektronika digital dan sistem komputer.

3.1. DASAR ELEKTRONIKA


3.1.1. Konsep Dasar Elektronika
Elektronika adalah ilmu yang mempelajari alat listrik arus lemah yang
dioperasikan dengan cara mengontrol aliran elektron atau partikel bermuatan listrik
dalam suatu alat seperti komputer, peralatan elektronik, termokopel, semikonduktor,
dan lain sebagainya. Ilmu yang mempelajari alat-alat seperti ini merupakan cabang
dari ilmu fisika, sementara bentuk desain dan pembuatan sirkuit elektroniknya adalah
bagian dari teknik elektro, teknik komputer, dan ilmu/ teknik elektronika dan
instrumentasi.
Alat-alat yang menggunakan dasar kerja elektronika ini biasanya disebut
sebagai peralatan elektronik (electronic devices). Contoh peralatan/ piranti elektronik
ini: Tabung Sinar Katoda (Cathode Ray Tube, CRT), radio, TV, perekam kaset,
perekam kaset video (VCR), perekam VCD, perekam DVD, kamera video, kamera
digital, komputer pribadi desk-top, komputer Laptop, PDA (komputer saku), robot,
smart card, dll.
Seperti disebutkan di atas elektronika didasarkan pada pengetahuan tentang
kelistrikan. Listrik, dapat diartikan sebagai berikut:
• Listrik adalah kondisi dari partikel subatomik tertentu, seperti elektron dan
proton, yang menyebabkan penarikan dan penolakan gaya di antaranya.
• Listrik adalah sumber energi yang disalurkan melalui kabel. Arus listrik timbul
karena muatan listrik mengalir dari saluran positif ke saluran negatif.
Ada 2 jenis muatan listrik: positif dan negatif. Melalui eksperimen, muatan-
sejenis saling menolak dan muatan-lawan jenis saling menarik satu sama lain.
Besarnya gaya menarik dan menolak ini ditetapkan oleh hukum Coulomb. Hukum
Coulomb adalah hukum yang menjelaskan hubungan antara gaya yang timbul antara
dua titik muatan, yang terpisahkan jarak tertentu, dengan nilai muatan dan jarak
pisah keduanya. Satuan unit SI dari muatan listrik adalah coulomb, yang memiliki
singkatan "C". Simbol Q digunakan dalam persamaan untuk mewakili kuantitas listrik
atau muatan. Contohnya, "Q=0,5 C" berarti "kuantitas muatan listrik adalah 0,5
coulomb".
Jika listrik mengalir melalui bahan khusus, misalnya dari wolfram dan tungsten,
cahaya pijar akan dipancarkan oleh logam itu. Bahan-bahan seperti itu dipakai dalam
bola lampu (bulblamp atau bohlam). Setiap kali listrik mengalir melalui bahan yang
mempunyai hambatan, maka akan dilepaskan panas. Semakin besar arus listrik, maka

36 Elektronika dan Sistem Komputer


panas yang timbul akan berlipat. Sifat ini dipakai pada elemen setrika dan kompor
listrik.
Hambatan listrik adalah perbandingan antara tegangan listrik dari suatu
komponen elektronik (misalnya resistor) dengan arus listrik yang melewatinya.
Hambatan listrik dapat dirumuskan sebagai berikut:

atau

di mana V adalah tegangan dan I adalah arus.


Tegangan listrik (kadang disebut sebagai Voltase) adalah perbedaan
potensial listrik antara dua titik dalam rangkaian listrik, dan dinyatakan dalam satuan
volt. Besaran ini mengukur energi potensial dari sebuah medan listrik yang
mengakibatkan adanya aliran listrik dalam sebuah konduktor listrik. Tergantung pada
perbedaan potensial listriknya, suatu tegangan listrik dapat dikatakan sebagai ekstra
rendah, rendah, tinggi atau ekstra tinggi.
Arus listrik adalah banyaknya muatan listrik yang mengalir tiap satuan waktu.
Muatan listrik bisa mengalir melalui kabel atau penghantar listrik lainnya.

Pada zaman dulu, Arus konvensional didefinisikan sebagai aliran muatan


positif, sekalipun kita sekarang tahu bahwa arus listrik itu dihasilkan dari aliran
elektron yang bermuatan negatif ke arah yang sebaliknya. Satuan SI untuk arus
listrik adalah ampere (A).

3.1.2. Komponen-Komponen Elektronika


• Resistor
Resistor adalah komponen dasar
elektronika yang digunakan untuk membatasi
jumlah arus yang mengalir dalam satu
rangkaian. Sesuai dengan namanya resistor
bersifat resistif dan umumnya terbuat dari
bahan karbon. Satuan resistansi dari suatu
Gambar 3.2. Resistor.
resistor disebut Ohm atau dilambangkan dengan
simbol W (Omega). Tipe resistor yang umum
adalah berbentuk tabung dengan dua kaki tembaga di kiri dan kanan. Pada
badannya terdapat lingkaran membentuk gelang kode warna untuk memudahkan
pemakai mengenali besar resistansi tanpa mengukur besarnya dengan Ohmmeter.

Rekayasa Perangkat Lunak 37


• Kapasitor
Kapasitor adalah komponen elektronika
yang dapat menyimpan muatan listrik. Struktur
sebuah kapasitor terbuat dari 2 buah plat metal
yang dipisahkan oleh suatu bahan dielektrik.
Bahan-bahan dielektrik yang umum dikenal
misalnya udara vakum, keramik, gelas dan lain-
lain. Jika kedua ujung plat metal diberi
Gambar 3.3. Kapasitor. tegangan listrik, maka muatan-muatan positif
akan mengumpul pada salah satu kaki
(elektroda) metalnya dan pada saat yang sama muatan-muatan negatif terkumpul
pada ujung metal yang satu lagi.

• Induktor
Induktor adalah komponen yang dapat
menyimpan energi magnetik. Energi ini
direpresentasikan dengan adanya tegangan emf
(electromotive force) jika induktor dialiri listrik.
Fungsi utama dari induktor di dalam suatu
Gambar 3.4. Induktor. rangkaian adalah untuk melawan fluktuasi arus
yang melewatinya. Aplikasinya pada rangkaian
dc salah satunya adalah untuk menghasilkan tegangan dc yang konstan terhadap
fluktuasi beban arus. Pada aplikasi rangkaian ac, salah satu gunanya adalah bisa
untuk meredam perubahan fluktuasi arus yang tidak dinginkan. Akan lebih banyak
lagi fungsi dari induktor yang bisa diaplikasikan pada rangkaian filter, tuner dan
sebagainya.

3.2. ELEKTRONIKA DIGITAL


3.2.1. Pengertian Elektronika Digital
Elektronika digital adalah sistem elektronik yang menggunakan signal digital.
Signal digital didasarkan pada signal yang bersifat terputus-putus. Biasanya
dilambangkan dengan notasi aljabar 1 dan 0. Notasi 1 melambangkan terjadinya
hubungan dan notasi 0 melambangkan tidak terjadinya hubungan. Contoh yang
paling gampang untuk memahami pengertian ini adalah saklar lampu. Ketika kalian
tekan ON berarti terjadi hubungan sehingga dinotasikan 1. Ketika kalian tekan OFF
maka akan berlaku sebaliknya.
Elektronik digital merupakan aplikasi dari aljabar boolean dan digunakan pada
berbagai bidang seperti komputer, telpon selular dan berbagai perangkat lain. Hal ini
karena elektronik digital mempunyai beberapa keuntungan, antara lain: sistem digital
mempunyai antar muka yang mudah dikendalikan dengan komputer dan perangkat
lunak, penyimpanan informasi jauh lebih mudah dilakukan dalam sistem digital
dibandingkan dengan analog. Namun sistem digital juga memiliki beberapa

38 Elektronika dan Sistem Komputer


kelemahan, yaitu: pada beberapa kasus sistem digital membutuhkan lebih banyak
energi, lebih mahal dan rapuh.

3.2.2. Gerbang Logika


Elektronik digital atau atau rangkaian digital apapun tersusun dari apa yang
disebut sebagai gerbang logika. Gerbang logika melakukan operasi logika pada satu
atau lebih input dan menghasilkan ouput yang tunggal. Output yang dihasilkan
merupakan hasil dari serangkaian operasi logika berdasarkan prinsip-prinsip aljabar
boolean. Dalam pengertian elektronik, input dan output ini diwujudkan dan voltase
atau arus (tergantung dari tipe elektronik yang digunakan).
Setiap gerbang logika membutuhkan daya yang digunakan sebagai sumber dan
tempat buangan dari arus untuk memperoleh voltase yang sesuai. Pada diagram
rangkaian logika, biasanya daya tidak dicantumkan.
Dalam aplikasinya, gerbang logika adalah blok-blok penyusun dari perangkat
keras elektronik. Gerbang logika ini dibuat dengan menggunakan transistor.
Seberapa banyak transistor yang dibutuhkan, tergantung dari bentuk gerbang logika.
Dasar pembentukan gerbang logika adalah tabel kebenaran (truth table). Ada tiga
bentuk dasar dari tabel kebenaran yaitu AND, OR, dan NOT. Berikut adalah tabel-
tabel dan bentuk gerbang logikanya.

Gambar 3.5. Tabel kebenaran dan representasinya dalam gerbang logika.

Penjelasan dari Gambar 3.5 di atas adalah sebagai berikut:

Rekayasa Perangkat Lunak 39


- Pada AND, bila ada dua buah input A dan B maka output atau signal hanya
dihasilkan jika A = 1 dan B = 1.
- Pada OR, bila ada dua buah input A dan B maka output atau signal akan
dihasilkan jika salah satu atau kedua input bernilai 1
- Pada NOT, bila ada satu input mempunyai nilai tertentu maka operasi NOT
akan menghasilkan output / signal yang merupakan kebalikan dari nilai
inputnya.
Selain bentuk dasar di atas, beberapa bentuk yang merupakan turunan dari
bentuk dasar juga penting diketahui. Gambar 3.6. menampilkan bentuk tabel
kebenaran dan gerbang logika NAND, NOR, dan XOR. NAND adalah hasil operasi NOT
+ AND, NOR adalah operasi NOT + OR sedangkan XOR adalah ekslusif OR. NAND
dan NOR merupakan bentuk gerbang logika yang banyak sekali digunakan untuk
membangun perangkat elektronik digital.

Gambar 3.6. Bentuk turunan tabel kebenaran dan representasinya dalam


gerbang logika.

40 Elektronika dan Sistem Komputer


3.2.3. Rangkaian Digital
Pada sub bab di atas kita telah belajar tentang bentuk-bentuk gerbang logika
berdasarkan tabel kebenaran. Sebuah rangkaian digital sebenarnya disusun dari satu
atau lebih gerbang logika ini. Perhatikan contoh pada Gambar 3.7. berikut ini. Kalau
kita perhatikan pada gambar tersebut, pada bagian atas terlihat ada empat notasi
gerban logika NAND, satu pin untuk sumber daya 5 V dan satu pin untuk ground.
Sedangkan pada bagian bawah adalah representasi dari rangkaian digital ini, yaitu
sebuah chip 7400.

Gambar 3.7. Contoh rangkaian digital dan representasinya pada hardware.

3.3. SISTEM KOMPUTER


Istilah komputer berasal dari bahasa Latin “Computare” yang berarti
menghitung. Oleh karena itu sebenarnya setiap alat yang berfungsi sebagai alat
hitung seperti mesin penjumlah, kalkulator, atau bahkan simpoa (abacus) secara
teknis dapat disebut sebagai komputer. Namun dalam perkembangannya, komputer
mempunyai perkembangan arti yang berbeda.
Komputer adalah alat pengolah data elektronik yang bekerja dan dikontrol
oleh sekumpulan instruksi (program) (Blissmer, 1985). Sistem komputer adalah
kumpulan elemen-elemen yaitu manusia, perangkat keras, dan perangkat lunak yang

Rekayasa Perangkat Lunak 41


saling berinteraksi untuk mencapai tujuan yaitu mendapatkan informasi yang
berguna, kemudahan dalam bekerja, kecepatan dan tujuan lainnya.
Ada tiga komponen utama dalam sistem komputer yaitu manusia sebagai
pengguna, perangkat keras dan perangkat lunak (Gambar 3.8). Apabila satu tidak
ada maka sistem komputer menjadi tidak bekerja. Sebagai contoh jika hanya ada
manusia dan perangkat keras, maka sistem komputer tidak bekerja karena tidak
program yang membantu manusia menjalankan perangkat keras.

Gambar 3.8. Sistem Komputer.

3.3.1. Perangkat keras


Perangkat keras adalah semua bagian fisik computer. Perangkat keras
dibedakan dengan data yang berada di dalamnya atau yang beroperasi di dalamnya,
dan perangkat lunak yang menyediakan instruksi buat perangkat keras untuk
menyelesaikan tugasnya. Secara umum ada empat komponen dasar pada komputer
yang saling terkait (Lihat Gambar 3.9).

Gambar 3.9. Komponen dasar komputer

42 Elektronika dan Sistem Komputer


- Unit Masukan (Input), yaitu perangkat yang memungkinkan pengguna
memasukkan data atau perintah ke dalam komputer. Contoh perangkat yang
termasuk dalam unit masukan adalah : keyboard, mouse, joystick, dan digitizer.
- Unit Keluaran (Output), yaitu perangkat yang memungkinkan pengguna
menerima informasi hasil pemrosesan oleh komputer. Contoh perangkat yang
termasuk dalam unit keluaran adalah : monitor, printer, dan plotter.
- Unit Memori Utama (Main memory), yaitu perangkat yang digunakan untuk
menyimpan data, program, dan informasi hasil pemrosesan komputer pada saat
pemrosesan. Unit memori utama terdiri dari banyak sel, yang masing-masing
dapat menyimpan satu satuan informasi. Unit memori utama terdiri dari dua
bagian, yaitu ROM (Read Only Memory) dan RAM (Random Access
Memory). ROM hanya dapat ditulisi sekali saja dan selanjutnya hanya dapat
dibaca. RAM dapat ditulisi, dihapus dan dibaca berulang kali. Data, program,
dan informasi yang sedang diproses disimpan dalam RAM ini, dan akan hilang
apabila komputer dimatikan. Itu sebabnya data, program, dan informasi yang
akan digunakan lagi disimpan dalam media penyimpanan tambahan (secondary
storage) seperti, hard disk, disket, CD, tape dan lain-lain.
- Unit Pemrosesan Pusat (Central Processing Unit), yaitu bagian yang digunakan
untuk memproses data, program, dan informasi pada komputer. Ada dua
bagian penting dalam CPU yaitu Arithmetic and Logical Unit (ALU) dan Control
Unit. Banyak orang menyebutkan ALU adalah jantung dari sebuah komputer.
ALU bertanggung jawab pada dua operasi dasar yaitu operasi aritmatik dan
perbandingan. Sedangkan Control Unit bertanggung jawab untuk
menkoordinasi semua aktivitas unit-unit lain, misalnya bagaimana keyboard
dapat dikenali dan bekerja sebagai unit input yang dimengerti aktivitasnya.
Secara fisik, arsitektur umum dari sebuah komputer yang biasa kita kenal
(Personal Computer/PC) dapat dilihat pada Gambar 3.10. Sebuah PC merupakan
rangkaian dari berbagai macam komponen yang memiliki fungsi masing-masing.

Rekayasa Perangkat Lunak 43


Keterangan gambar:
1. Display
2. Motherboard
3. CPU
4. Main Memory
5. Expansion Cards
6. Power Supply
7. Optical Disc Drive
8. Secondary
Storage (Hard
Disk)
9. Keyboard
10. Mouse

Gambar 3.10. Perangkat keras komputer.

Berikut ini penjelasan singkat tentang komponen-komponen fisik dalam


sebuah komputer :
1. Display. Komponen display atau monitor termasuk dalam unit keluaran sebuah
komputer. Sebuah kabel menghubungkan monitor dengan adapter video yang
diinstal pada slot ekspansi motherboard. Komputer mengirimkan signal kepada
adapter video, mengenai karakter, gambar atau grafik apa yang harus
ditampilkan. Adapter video akan mengkonversi signal menjadi sekumpulan
instruksi tentang bagaimana monitor harus menampilkan teks, atau gambar
pada layarnya.

44 Elektronika dan Sistem Komputer


Gambar 3.11. Display atau monitor.

2. Motherboard. Motherboard atau dikenal juga sebagai mainboard, system board


atau logic board (pada Apple Computer) dan kadang disingkat sebagai mobo
adalah pusat dari papan sirkuit utama pada sebuah sistem elektronik, seperti
perangkat komputer modern. Pada komponen ini akan diletakkan
(ditancapkan) komponen-komponen lain seperti memori utama, processor,
adapter video, adapter suara dan lain-lain, sehingga terbentuk sistem komputer
yang komplit dan dapat bekerja.

Gambar 3.12. Motherboard sebuah komputer.

Rekayasa Perangkat Lunak 45


3. CPU. Central Processing Unit (CPU), atau sering disebut sebagai Processor,
adalah komponen pada komputer digital yang menginterpretasi insktruksi dan
memproses data pada suatu program komputer. CPU menyediakan bagian
penting dari sustu sisitem digital yaitu kemampuan untuk diprogram.
Komponen ini merupakan komponen yang harus ada pada setiap perangkat
komputer.

AMD Athlon processor Intel processor


Gambar 3.13. Central Processing Unit (CPU)

4. Main Memory. Main Memory atau kadang disebut sebagai Primary Storage,
atau Internal Memory, adalah memori komputer yang secara langsung dapat
diakses oleh CPU tanpa menggunakan jalur input/output komputer. Komponen
ini digunakan untuk menyimpan data yang sedang aktif digunakan. Primary
storage dapat terdiri dari beberapa tipe penyimpan seperti main storage, cache
memory, dan special registers.

Gambar 3.14. Berbagai jenis main memory.

46 Elektronika dan Sistem Komputer


5. Expansion Cards. Expansion card (kartu ekspansi) adalah sebuah printed circuit
board (PCB) yang dapat ditancapkan pada slot ekspansi yang tersedia pada
motherboard komputer untuk menambah fungsionalitas dari komputer. Contoh
expansion card antara lain kartu adapter video, kartu adapter audio, kartu
adapter jaringan dan lain-lain.

Gambar 3.15. Pemasangan expansion card.

6. Power Supply. Power supply atau kadang-kadang disebut PSU (Power Supply
Unit) adalah perangkat yang menyuplai energi listrik atau energi jenis lain pada
komponen lain dalam komputer.

Gambar 3.16. Power Supply Unit.

Rekayasa Perangkat Lunak 47


7. Optical Disc Drive. Optical Disc adalah sebuah media penyimpanan sekunder
yang berbentuk seperti piringan hitam, namun dalam ukuran yang lebih kecil.
Data yang tersimpan dalam Optical Disc diakses ketika material yang spesifik
pada Optical Disc disinari oleh sinar laser. Ada dua tipe utama dalam Optical
Disc yaitu yang berbasis pada CD (Compact Disc) dan yang berbasis pada DVD
(Digital Versatile Disc). Perangkat untuk membaca, menulis, atau menghapus
disebut Optical Disc Drive.

Gambar 3.17. CD-RW Drive, salah satu contoh Optical Disc Drive.

8. Secondary Storage (Hard Disk). Secondary Storage adalah perangkat yang


digunakan untuk membantu Primary Storage (main memory), terutama untuk
menyimpan data, program, atau informasi yang akan digunakan lagi. Berbeda
dengan primary storage, data, program dan informasi pada secondary storage
tidak akan hilang meskipun komputer dimatikan, kecuali apabila memang
sengaja dihapus. Secondary storage yang paling banyak ditemui dalam setiap
komputer adalah Hard Disk. Hard disk akan menyimpan data dengan
menggunakan material bersifat magnetic dalam pola-pola tertentu yang
merepresentasikan data.

48 Elektronika dan Sistem Komputer


Gambar 3.18. Hard Disk

9. Keyboard. Keyboard atau papan kunci, perangkat yang digunakan untuk


menginputkan teks dan karakter pada komputer. Perangkat ini juga dapat
digunakan untuk mengontrol fungsi-fungsi khusus pada komputer. Gambar
3.19 menunjukkan lay out sebuah keyboard yang umum kita jumpai.

Gambar 3.19. Skema umum sebuah keyboard.

10. Mouse. Mouse, biasanya terdiri dari pointing device, yang digunakan untuk
mendeteksi pergerakan relative dari dua permukaan secara dua dimensi yang
kemudian ditampilkan pada display. Sebagai tambahan, pada mouse seringkali
ditambahkan fungsi lain, seperti "wheels" atau roda. Selain mendeteksi
pergerakan, mouse juga berperan dalam mengeksekusi perintah dengan cara
menekan tombol pada mouse sekali (click) atau dua kali berurutan (double
click).

Rekayasa Perangkat Lunak 49


Gambar 3.20. Berbagai jenis mouse.

3.3.2. Perangkat lunak


Perangkat lunak/piranti lunak adalah program komputer yang berfungsi
sebagai sarana interaksi antara pengguna dan perangkat keras. Atau boleh juga
diartikan sebagai ‘penterjemah' perintah-perintah yang dijalankan pengguna
komputer untuk diteruskan ke atau diproses oleh perangkat keras.
Program komputer ini, isinya dapat diubah dengan mudah. Pada komputer,
perangkat lunak dimuat ke dalam RAM kemudian dieksekusi di dalam CPU. Pada
level paling bawah, perangkat lunak berisi bahasa mesin yang bersifat spesifik
terhadap suatu processor.
Ada banyak model penggolongan perangkat lunak, namun secara umum
perangkat lunak dapat dibagi menjadi tiga kelompok, yaitu :
1. System Software
System Software adalah perangkat lunak yang digunakan untuk membantu
menjalankan perangkat keras dan sistem komputer. Tujuan dari system
software adalah membatasi semaksimal mungkin programmer aplikasi dari
kompleksitas sebuah komputer, terutama yang berhubungan dengan akses memori
dan perangkat keras secara langsung.
Termasuk dalam kelompok ini adalah sistem operasi, driver perangkat keras,
perangkat lunak pendiagnosa, windowing system, utilities dan lain-lain. Dari
kelompok ini sistem operasi merupakan perangkat lunak yang paling penting.
Perangkat lunak ini bekerja sebagai antar muka antara komputer dengan dunia luar.
Pada bagian hardware, sistem operasi akan mendiskripsikan perangkat keras yang
ada atau terhubung dengan komputer. Sistem operasi menyediakan antar muka
pada perangkat keras ini menggunakan “driver” tertentu sehingga perangkat ini
dapat dikenali dan bekerja sebagai mana mestinya. Penjelasan lebih detil tentang
sistem operasi dapat dilihat pada Bab 4.

50 Elektronika dan Sistem Komputer


Gambar 3.21. Tampilan desktop sistem operasi Windows XP.

2. Programming Software
Programming Software adalah perangkat lunak yang menyediakan alat
bantu atau fungsi yang dapat membantu programmer dalam membuat program
komputer.
Software ini sangat bergantung pada bahasa pemrograman yang digunakan.
Alat bantu ini meliputi editor teks, compiler, interpreter, linkers, debugger dan lain-
lain. Sebuah Integrated Development Environment (IDE) atau lingkungan
pengembangan terpadu menggabungkan alat-alat bantu ini untuk mempermudah
programmer. Kita akan banyak mempelajari bagian ini pada buku ini.

3. Application Software
Application Software adalah perangkat lunak yang digunakan membantu
manusia mengerjakan tugas-tugas tertentu (kadang tidak berhubungan dengan
komputer.
Tipe-tipe application software antara lain, perangkat lunak otomatisasi
industri, perangkat lunak bisnis, perangkat lunak pendidikan, perangkat lunak
software, database, dan game komputer. Beberapa contoh application software
dapat dilihat pada Gambar-Gambar berikut ini.

Rekayasa Perangkat Lunak 51


Gambar 3.22. Application software Microsoft Word (Software pengolah kota).

Gambar 3.23. Application software Winrar (Software kompresi dan ekstraksi file).

52 Elektronika dan Sistem Komputer


Gambar 3.24. Application software PowerSim (Software untuk simulasi sistem).

Gambar 3.25. Application software Hysis (Software untuk perancangan pabrik).

Rekayasa Perangkat Lunak 53


3.4. RINGKASAN
• Elektronika adalah ilmu yang mempelajari alat listrik arus lemah yang
dioperasikan dengan cara mengontrol aliran elektron atau partikel
bermuatan listrik.
• Elemen penting dalam teori kelistrikan adalah muatan listrik (Q),
hambatan (R), tegangan (V) dan arus (I).
• Elektronika digital adalah sistem elektronik yang menggunakan signal
digital dan tersusun dari apa yang disebut sebagai gerbang logika.
• Gerbang logika adalah blok-blok penyusun dari perangkat keras
elektronik.
• Ada tiga bentuk dasar dari tabel kebenaran dan gerban logika yaitu AND,
OR, dan NOT. Selain itu dikenal juga bentuk turunan yaitu NAND, NOR,
dan XOR.
• Komputer adalah alat pengolah data elektronik yang bekerja dan
dikontrol oleh sekumpulan instruksi (program).
• Sistem komputer adalah kumpulan elemen-elemen yaitu manusia,
perangkat keras, dan perangkat lunak yang saling berinteraksi untuk
mencapai tujuan yaitu mendapatkan informasi yang berguna, kemudahan
dalam bekerja, kecepatan dan tujuan lainnya.
• Ada tiga komponen utama dalam sistem komputer yaitu manusia sebagai
pengguna, perangkat keras dan perangkat lunak.

3.5. SOAL-SOAL LATIHAN


1. Jelaskan pengertian elektronika.
2. Sebutkan hubungan antara muatan listrik, hambatan, tegangan dan arus.
3. Sebutkan komponen-komponen elektronika yang anda ketahui.
4. Sebutkan pengertian elektronika digital.
5. Gambarkan bentuk-bentuk gerbang logika.
6. Gambarkan satu contoh rangkaian digital.
7. Sebutkan komponen-komponen dalam sistem komputer.
8. Jika satu dari komponen sistem komputer tidak tersedia, apa yang akan
terjadi?

54 Elektronika dan Sistem Komputer


Gambar 4.1. Menjalankan sistem operasi berbasis teks.

Kalau kita perhatikan sekilas Gambar 4.1 di atas mungkin kita akan bertanya-
tanya baris-baris tulisan apakah yang tersaji pada gambar tersebut. Tapi kalau kita
cermati kita akan dapat menduga teks di atas adalah baris perintah dan hasil eksekusi
dari sistem operasi. Bagian perintah sistem operasi berbasis teks ini sering kita
abaikan namun sebenarnya sangat penting dan berguna.
Bab ini akan membahas standar kompetensi mengoperasikan sistem operasi
komputer berbasis teks dan GUI. Ada dua kompetensi dasar pada standar
kompetensi ini yaitu menyiapkan pengoperasian PC, mengoperasikan PC yang
tersambung ke jaringan, dan memutuskan koneksi jaringan. Dalam penyajian pada
buku ini, setiap kompetensi dasar memuat uraian materi. Ringkasan diletakkan pada
akhir bab. Sebelum mempelajari kompetensi ini ingatlah kembali tentang sistem
komputer pada bab sebelumnya dan materi-materi pendukung dari mata pelajaran
matematika.

Rekayasa Perangkat Lunak 55


TUJUAN
Setelah anda membaca Bab ini, diharapkan pembaca akan
mampu :
o Menjelaskan pengertian sistem operasi.
o Menjalankan proses instalasi dan booting sistem operasi.
o Menjalankan sistem operasi dengan mode teks maupun
GUI pada sistem operasi.
o Mengoperasikan PC yang tersambung ke jaringan

4.1. PENGERTIAN SISTEM OPERASI


Seperti telah disebutkan pada bab terdahulu, sistem operasi termasuk dalam
kelompok system software yaitu perangkat lunak yang berperan dalam menjalankan
perangkat keras komputer dan sistem komputer secara keseluruhan.
Sistem Operasi adalah perangkat lunak yang bertugas mengelola
penggunaan sumberdaya dalam komputer dan menyediakan antarmuka bagi
pengguna untuk mengakses sumberdaya tersebut.

4.1.1 FUNGSI
Fungsi-fungsi sebuah sistem operasi secara umum dapat dilihat pada gambar
4.2.
• Antar muka pengguna
Fungsi ini merupakan fungsi yang paling mudah dikenali oleh pengguna
karena melalui fungsi ini pengguna dapat berinteraksi dengan sistem operasi,
perangkat keras maupun perangkat lunak yang lain. Sistem operasi pada dasarnya
menunggu input atau instruksi dari pengguna dan kemudian menerjemahkan
perintah-perintah tersebut dalam bahasa yang dimengerti oleh komputer. Antar
muka pengguna menjadi tempat bagi pengguna untuk menuliskan atau
menyampaikan perintah tersebut.

56 Sistem Operasi
Gambar 4.2. Fungsi-fungsi sistem operasi.

Secara garis besar ada dua model antar muka pengguna yaitu Command Line
Interface (CLI) dan Graphical User Interface (GUI). CLI memberikan fasilitas bagi
pengguna untuk memberikan perintah dalam bentuk teks sedangkan GUI lebih
berbasis pada tampilan grafis. Dewasa ini hampir semua sistem operasi modern
menyediakan model GUI sebagai antar muka pengguna. Beberapa menyediakan
GUI yang terintegrasi dengan kernel sistem operasi, misalnya pada Microsoft
Windows dan Apple Mac OS versi awal. Sedangkan yang lainnya menyediakan GUI
yang bersifat modular, yaitu tidak terintegrasi langsung pada kernel sistem
operasinya, seperti pada Unix, Linux dan Mac OS versi X ke atas.

• Manajemen memori
Memori utama atau lebih dikenal sebagai memori adalah sebuah array yang
besar dari word atau byte, yang ukurannya mencapai ratusan, ribuan, atau bahkan
jutaan. Setiap word atau byte mempunyai alamat tersendiri. Memori utama
berfungsi sebagai tempat penyimpanan instruksi/data yang akses datanya
digunakan oleh CPU dan perangkat Masukan/Keluaran. Memori utama termasuk
tempat penyimpanan data yang yang bersifat volatile -- tidak permanen -- yaitu data
akan hilang kalau komputer dimatikan.
Sistem operasi bertanggung-jawab atas aktivitas-aktivitas yang berkaitan
dengan manajemen memori seperti:
o Menjaga track dari memori yang sedang digunakan dan siapa yang
menggunakannya.
o Memilih program yang akan di-load ke memori.

Rekayasa Perangkat Lunak 57


Gambar 4.3. Manajemen memori pada sistem operasi Microsoft Windows

• Manajemen file
File (berkas) adalah kumpulan informasi yang berhubungan, sesuai dengan
tujuan pembuat berkas tersebut. Umumnya file merepresentasikan program dan
data. File dapat mempunyai struktur yang bersifat hirarkis (direktori, volume, dll.).
Sistem operasi mengimplementasikan konsep abstrak dari file dengan mengatur
media penyimpanan massal, misalnya tapes dan disk.
Sistem operasi bertanggung-jawab dalam aktivitas yang berhubungan dengan
manajemen file :
o Pembuatan dan penghapusan file.
o Pembuatan dan penghapusan direktori.
o Mendukung manipulasi berkas dan direktori.
o Memetakan berkas ke secondary-storage.
o Mem-back-up berkas ke media penyimpanan yang tidak permanen (non-
volatile).

58 Sistem Operasi
Gambar 4.4. Windows Explorer sebagai sarana pengelolaan file.

• Manajemen proses
Proses adalah sebuah program yang sedang dieksekusi. Sebuah proses
membutuhkan beberapa sumber daya untuk menyelesaikan tugasnya. Alokasi
sumber daya tersebut dikelola oleh Sistem Operasi. Misalnya, penggunaan memori
oleh CPU, file-file yang terbuka, dan penggunaan oleh perangkat-perangkat
input/output lain. Ketika proses tersebut berhenti dijalankan, sistem operasi akan
mendapatkan kembali semua sumber daya yang bisa digunakan kembali.
Sistem operasi bertanggung-jawab atas aktivitas-aktivitas yang berkaitan
dengan manajemen proses seperti:
o Membuat dan menghapus proses pengguna dan sistem proses.
o Menunda atau melanjutkan proses.
o Menyediakan mekanisme untuk sinkronisasi proses.
o Menyediakan mekanisme untuk komunikasi proses.
o Menyediakan mekanisme untuk penanganan deadlock.

Rekayasa Perangkat Lunak 59


Gambar 4.5. Manajemen proses pada sistem operasi Microsoft Windows.

• Manajemen sistem masukan dan keluaran (I / O)


Sistem ini sering disebut dengan device manager. Menyediakan device driver
yang umum sehingga operasi Masukan/Keluaran dapat seragam (membuka,
membaca, menulis, menutup). Contoh: pengguna menggunakan operasi yang sama
untuk membaca berkas pada perangkat keras, CD-ROM dan floppy disk.
Komponen Sistem Operasi untuk sistem Masukan/Keluaran:
o Penyangga: menampung sementara data dari/ke perangkat
Masukan/Keluaran.
o Spooling: melakukan penjadwalan pemakaian Masukan/Keluaran sistem
supaya lebih efisien (antrian dsb.).
o Menyediakan driver: untuk dapat melakukan operasi rinci untuk perangkat
keras Masukan/Keluaran tertentu.

60 Sistem Operasi
Gambar 4.6. Manajemen I / O pada sistem operasi Microsoft Windows.

4.1.2 BIOS
BIOS merupakan singkatan dari Basic Input/Output System. BIOS adalah kode-
kode program yang pertama kali dijalankan ketika komputer dinyalakan (booting).
Fungsi utama BIOS adalah untuk mengidentifikasi dan mengenali perangkat keras
komputer. Biasanya BIOS akan tersimpan dalam ROM (Read Only Memory) yang ada
pada motherboard suatu komputer.
Ketika komputer dinyalakan maka BIOS akan mencoba mengenali bagian-
bagian komputer berikut ini:
• clock generator.
• processors dan caches.
• chipset (memory controller and I/O controller).
• system memory.
• Semua perangkat PCI
• primary graphics controller.
• Mass storage controllers (seperti SATA and IDE controllers).
• Various I/O controllers (such keyboard/mouse and USB).
Setelah dikenali maka BIOS akan memanggil program untuk boot suatu sistem operasi
(boot loader).

Rekayasa Perangkat Lunak 61


Kita dapat melakukan setting BIOS dengan menggunakan fasilitas yang
disediakan oleh BIOS. Biasanya dengan menekan tombol Del atau F2 (tergantung
jenis komputernya) ketika komputer baru dinyalakan. Jika berhasil masuk maka kita
akan disuguhi tampilan seperti pada Gambar 4.7. kita dapat melakukan serangkain
pengaturan pada perangkat keras yang ada pada komputer.

Gambar 4.7. Tampilan BIOS utility.

4.2. JENIS-JENIS SISTEM OPERASI


Sistem operasi telah berkembang melalui jalan yang panjang. Dari yang paling
sederhana sampai yang paling modern dewasa ini. Masing-masing memiliki kelebihan
dan kekurangan terutama sehubungan dengan fungsi-fungsi yang dimilikinya. Pada
bagian berikut ini akan dibahas beberapa sistem operasi yang banyak digunakan dan
familiar bagi pengguna komputer.

4.2.1. DOS
DOS adalah singkatan dari Disk Operating System. DOS merujuk pada
perangkat sistem operasi yang digunakan di banyak komputer yang menyediakan
abstraksi dan pengelolaan perangkat penyimpan sekunder dan informasinya.
Misalnya penggunaan sistem file yang mengelola file-file yang ada pada perangkat
penyimpan. DOS biasanya dijalankan dari satu atau dua disc. Hal ini karena pada
masa DOS digunakan media penyimpan masih sangat terbatas kemampuannya
(paling besar mungkin hanya 1,4 Megabyte).
Ada banyak jenis DOS diantaranya Apple DOS, Commodore DOS, Atari DOS dan
lain-lain. Jenis ini sangat bergantung dengan jenis perangkat komputernya. Jenis
DOS yang paling terkenal adalah jenis DOS yang berjalan pada mesin-mesin yang
compatible dengan IBM Personal Computer.
62 Sistem Operasi
Untuk menjalankan perintah-perintah sistem operasi, DOS menggunakan
perintah berbasis teks atau CLI. Setiap kali selesai mengetikkan suatu perintah, kita
harus menekan tombol ENTER untuk mengeksekusi perintah tersebut. Contoh operasi
dengan menggunakan DOS dapat dilihat pada Gambar 4.8.

Gambar 4.8. Contoh penggunaan DOS.

4.2.2. UNIX
UNIX adalah sistem operasi yang mula-mula dikembangkan oleh suatu
kelompok di AT & T pada laboatorium Bell. Unix banyak digunakan baik untuk server
maupun workstation. Linkungan Unix dan model program client-server menunjukkan
bahwa Unix lebih dikembangkan sebaga sistem operasi yang kuat di jaringan
komputer dari pada sistem operasi untuk computer personal.
UNIX dirancang untuk portable, multi-tasking, dan multi-user. Konsep utama
Unix antara lain banyak menggunakan file teks biasa untuk menyimpan data,
menggunakan sistem file berjenjang, memperlakukan perangkat sebagai suatu file,
dan menggunakan banyak program kecil yang eksekusinya pada CLI dapat digabung
dengan tanda pipeline (|). Pada Gambar 5.2 di atas, tampak beberapa perintah UNIX
yang digabung dengan pipeline. Konsep yang sangat solid dan stabil membuat Unix
banyak dijadikan dasar sistem operasi modern. Gambar 4.9. menunjukkan
bagaimana Unix merupakan dasar dari banyak sistem operasi yang ada sekarang.

Rekayasa Perangkat Lunak 63


Gambar 4.9. Unix dan sistem operasi turunannya.

Sistem UNIX terdiri dari beberapa komponen yang biasanya dipaket bersama.
Umumnya paket-paket tersebut adalah sebagai berikut:
• Kernel dengan sub komponen seperti :
o conf — file konfigurasi.
o dev — driver perangkat keras
o sys — kernel sistem operasi, manajemen memori, penjadwalan proses,
sistem calls dan lain-lain.
o h — header files, mendefinisikan struktur kunci di dalam sistem.

64 Sistem Operasi
Gambar 4.10. Manajemen memori dan penjadwalan proses pada Unix.

• Development Environment:
o cc —compiler untuk bahasa C
o as — machine-language assembler
o ld — linker, untuk menggabung file-file object
o lib — object-code libraries (diinstall di folder /lib atau /usr/lib) libc,
kumpulan pustaka untuk bahasa C
o make – program untuk mengkompilasi kode program
o include — file-file header untuk pengembangan perangkat lunak dan
menentukan standar interface
o Other languages — bahasa-bahasa pemrograman lain seperti Fortran-77,
Free Pascal, dan lain-lain.
• Commands:
o sh —"Shell" untuk melakukan pemrograman berbasis CLI atau
mengeksekusi perintah-perintah tertentu.
o Utilities — Sekumpulan perintah CLI yang berguna untuk fungsi-fungsi
yang bermacam-macam, meliputi:
ƒ System utilities — Program-program untuk pengelolaan sistem
seperti mkfs, fsck, dan lain-lain.
ƒ User utilities — Program-program untuk pengelolan lingkungan
kerja, seperti passwd, kill, dan lain-lain.

Rekayasa Perangkat Lunak 65


o Document formatting — Program untuk penyiapan dokumen seperti nroff,
troff, tbl, eqn, refer, dan pic. Beberapa sistem Unix modern juga
memasukkan aplikasi seperti TeX dan Ghostscript.
o Graphics — Sistem Unix modern menyediakan X11 sebagai sistem
standard windowing dan GUI.

Gambar 4.11. X windows system di UNIX.

4.2.3. Microsoft Windows


Micosoft Windows atau orang lebih sering menyebut Windows saja pada
awalnya hanyalah add-on dari MS-DOS karena tingginya tuntutan pada sistem operasi
yang berbasis GUI. Versi awal Windows berjalan di atas MS-DOS. Meski demikian
Windows versi awal telah menunjukkan beberapa fungsi-fungsi yang umum dijumpai
dalam sistem operasi, antara lain: memiliki tipe file executable tersendiri, memiliki
driver perangkat keras sendiri, dan lain-lain.

66 Sistem Operasi
Gambar 4.12. Windows versi 3.11.

Secara konsep sebenarnya Windows lebih banyak ditujukan bagi komputer


personal. Pada awalnya Windows juga tidak mendukung konsep multi-tasking dan
multi-user. Akomodasi terhadap jaringan atau fungsi-fungsi client-server juga tidak
sekuat pada UNIX dan turunannya. Sehingga masalah yang sering muncul di sistem
operasi Windows adalah masalah keamanan yang berhubungan dengan jaringan.
Namun Windows memiliki kelebihan dari sisi kemudahan pemakaian. Pada versi yang
terbaru (Windows Vista) konsep multi-user dan multi-tasking telah semakin matang.
Selain itu tampilan GUI telah dirubah dengan banyak menggunakan efek tiga dimensi.

Gambar 4.13. Windows Vista.

Rekayasa Perangkat Lunak 67


4.2.4. Apple Mac OS
Seperti terlihat pada Gambar 5.10, Apple Mac OS merupakan turunan dari
UNIX melalui jalur BSD (Berkeley Software Distribution). Oleh karena itu kekuatan
dalam multi-tasking, multi-user, networking yang ada pada UNIX juga dimiliki oleh
Mac OS. Mac OS adalah sistem operasi berbasis GUI. Apple merupakan pelopor
dalam penggunaan GUI pada sistem operasi. Penggunaan icon, mouse dan beberapa
komponen GUI merupakan sumbangan yang luar biasa bagi perkembangan sistem
operasi berbasis GUI.
Versi awal dari Mac OS hampir secara penuh mengandalkan pada kemampuan
GUI-nya dan sangat membatasi penggunaan CLI (Gambar 5.15). Meskipun sangat
memudahkan namun ada beberapa kelemahan, antar lain: multi-tasking yang tidak
berjalan sempurna, pengelolaan memori yang terbatas, dan konflik pada beberapa
program yang ditanamkan. Memperbaiki sistem Mac OS kadang-kadang menjadi
suatu pekerjaan yang sangat melelahkan.

Gambar 4.14. Mac OS versi awal.

Pada Mac OS X (versi terbaru), semua kelemahan pada versi lama telah coba
dihilangkan. Multi-tasking telah berjalan dengan baik dan manajemen memori yang
jauh lebih baik. Selain itu tampilan GUI-nya disebut-sebut sebagai yang terbaik di
antara sistem operasi yang ada..

68 Sistem Operasi
Gambar 4.15. Mac OS X.

4.2.5. Linux
Linux sangat mirip dengan sistem-sistem UNIX, hal ini dikarenakan
kompatibilitas dengan UNIX merupakan tujuan utama desain dari proyek Linux.
Perkembangan Linux dimulai pada tahun 1991, ketika mahasiswa Finlandia bernama
Linus Torvalds menulis Linux, sebuah kernel untuk prosesor 80386, prosesor 32-bit
pertama dalam kumpulan CPU intel yang cocok untuk PC.
Dalam banyak hal, kernel Linux merupakan inti dari proyek Linux, tetapi
komponen lainlah yang membentuk secara komplit sistem operasi Linux. Dimana
kernel Linux terdiri dari kode-kode yang dibuat khusus untuk proyek Linux,
kebanyakan perangkat lunak pendukungnya tidak eksklusif terhadap Linux, melainkan
biasa dipakai dalam beberapa sistem operasi yang mirip UNIX. Contohnya, sistem
operasi BSD dari Berkeley, X Window System dari MIT, dan proyek GNU dari Free
Software Foundation.
Pembagian (sharing) alat-alat telah bekerja dalam dua arah. Sistem
perpustakaan utama Linux awalnya dimulai oleh proyek GNU, tetapi perkembangan
perpustakaannya diperbaiki melalui kerjasama dari komunitas Linux terutama pada
pengalamatan, ketidak efisienan, dan bugs. Komponen lain seperti GNU C Compiler,
gcc, kualitasnya sudah cukup tinggi untuk dipakai langsung dalam Linux. Alat-alat
administrasi network dibawah Linux berasal dari kode yang dikembangkan untuk
4.3BSD, tetapi BSD yang lebih baru , salah satunya FreeBSD, sebaliknya meminjam
kode dari Linux, contohnya adalah perpustakaan matematika Intel floating-point-
emulation.

Rekayasa Perangkat Lunak 69


Saat ini, Linux merupakan salah satu sistem operasi yang perkembangannya
paling cepat. Kehadiran sejumlah kelompok pengembang, tersebar di seluruh dunia,
yang selalu memperbaiki segala fiturnya, ikut membantu kemajuan sistem operasi
Linux. Bersamaan dengan itu, banyak pengembang yang sedang bekerja untuk
memindahkan berbagai aplikasi ke Linux (dapat berjalan di Linux).
Masalah utama yang dihadapi Linux dahulu adalah interface yang berupa teks
(text based interface). Ini membuat orang awam tidak tertarik menggunakan Linux
karena harus dipelajari terlebih dahulu dengan seksama untuk dapat dimengerti cara
penggunaannya (tidak user-friendly). Tetapi keadaan ini sudah mulai berubah dengan
kehadiran KDE dan GNOME. Keduanya memiliki tampilan desktop yang menarik
sehingga mengubah persepsi dunia tentang Linux.

Gambar 4.16. Linux dengan desktop KDE.

4.3. MENYIAPKAN DAN MENJALANKAN SISTEM OPERASI


Mengenal sistem informasi saja tidak cukup. Bagi seorang yang bergerak
dalam pemrograman perlu mengetahui secara lebih mendalam tentang bagaimana
instalasi, booting dan menjalankan sistem operasi, dari pada pengguna biasa.

4.3.1. Instalasi
Instalasi adalah pemasangan perangkat lunak pada system computer.
Sedangkan Instalasi Sistem Operasi adalah pemasangan system operasi pada
sistem computer. Sistem operasi akan dipasang terlebih dahulu dibanding perangkat

70 Sistem Operasi
lunak yang lain. Perangkat lunak yang lain baru bisa dijalankan setelah sistem operasi
terinstal dengan benar.
Seperti telah dijelaskan, masing-masing sistem operasi memiliki ciri tersendiri.
Demikian juga dengan proses instalasi sistem operasi. Proses instalasi sangat
bergantung pada jenis sistem operasinya. Berdasarkan tampilan anta mukanya kita
dapat membagi menjadi dua, yaitu yang berbasis GUI dan berbasis CLI. Proses
instalasi berbasis GUI ada pada sistem operasi Microsoft Windows (GUI penuh pada
versi Vista), Apple Mac OS ver X dan yang di atasnya, beberapa versi Linux seperti,
Ubuntu dan turunannya (Xubuntu, Kubuntu, Edubuntu, dan lain-lain), Mandriva dan
turunannya (PC Linux OS), dan Fedora versi terbaru. Sedangkan versi CLI ada pada
Linux versi Slackware, Gentoo dan lain-lain.
Proses instalasi juga dapat dibagi berdasarkan sumber instalasinya, yaitu
bersumber dari media baik itu CD, DVD atau hard-disc dan yang bersumber dari
network (jaringan). Proses instalasi dengan menggunakan media CD atau DVD
merupakan metode yang paling umum digunakan. Pada bagian ini hanya akan
dijelaskan tentang proses instalasi dengan sumber dari CD/DVD
Tahapan-tahapan dalam instalasi biasanya seperti terlihat pada Gambar 4.16.
Tahapan-tahapan instalasi ini mungkin bervariasi antar sistem operasi. Namun secara
umum tahapan dalam sistem operasi apapun tidak akan berbeda jauh.

Gambar 4.16. Tahapan-tahapan instalasi.


• Cek kesiapan perangkat keras. Tahap ini bertujuan untuk memastikan bahwa
semua perangkat perangkat keras dan periferalnya terpasang dengan benar.
Selain itu juga untuk melihat apakah spesifikasi perangkat keras komputer
didukung oleh sistem operasi tersebut.
• Setting BIOS. Pada dasarnya tahapan ini adalah untuk mengkonfigurasi BIOS
agar meletakkan media instalasi dalam urutan paling atas dalam prioritas
booting.

Rekayasa Perangkat Lunak 71


• Booting dari media instalasi. Apabila setting BIOS berhasil dengan baik, maka
komputer akan boot dari media instalasi. Gambar 4.17 merupakan screen-shot
dari proses booting di bagian awal.

Gambar 4.17. Testing media instalasi.


• Setting I/O utama. Tahapan ini bertujuan untuk mengatur agar perangkat input
/ output utama (mouse, keyboard dan video) dapat berjalan dengan baik ketika
proses instalasi dilakukan.
• Persiapan dan penentuan lokasi instalasi. Media yang paling umum digunakan
sebagai target instalasi adalah hard disk yang tertanam di komputer. Kita perlu
mempersiapkan hard disk tersebut agar siap ditulis. Persiapan ini meliputi partisi
hard disk (termasuk besarnya volume untuk masing-masing partisi) dan format
partisi sesuai dengan sistem file yang disyaratkan oleh sistem operasi. Untuk
Microsoft Windows, dapat menggunakan sistem file NTFS atau FAT32. Untuk
linux dapat digunakan sistem file ext2, ext3, ReiserFS, dan XFS. Untuk Apple
Mac OS X biasanya digunakan HFS+. Gambar 4.18 menunjukkan proses
penentuan lokasi instalai pada proses instalasi Fedora Core 8.

Gambar 4.18. Proses penentuan target instalasi.


72 Sistem Operasi
• Penentuan paket Sistem Operasi yang akan diinstal. Tahap ini kadang tidak
diperlukan jika kita memilih instalasi secara default. Namun bila kita ingin
menginstal sistem operasi agar sesuai dengan keinginan kita (custom installation)
maka tahapan ini harus dilakukan. CD atau DVD instalasi, biasanya mempunyai
paket-paket aplikasi yang dapat kita pilih ketika instalasi sistem operasi berjalan
atau ketika proses instalasi telah selesai.
• Proses copy ke hard disk. Setelah penentuan paket aplikasi dilakukan, maka
proses copy file instalasi ke hard disk dapat segera dilakukan. Gambar 4.19.
merupakan contoh proses copy file sistem operasi.

Gambar 4.19. Proses copy file pada Fedora.


• Setting peripheral lain. Tahapan ini bertujuan untuk menginstal driver bagi
peripheral (kartu VGA, kartu suara, chipset motherboard dan lain-lain) pada
suatu komputer agar dapat bekerja dengan optimal.
• Penentuan user. User adalah pengguna dari sistem operasi yang telah diinstal.
Data dari user yang biasanya ditanyakan adalah user name dan password.
Secara umum ada dua level pengguna, yaitu administrator dan user biasa.
Administrator mempunyai hak pada semua bagian dari sistem operasi sedangkan
user biasa mempunyai hak yang ditentukan oleh administrator.

4.3.2. Booting
Booting adalah proses awal saat komputer dihidupkan. Proses awal booting
dapat dijelaskan dengan menggunakan skema pada Gambar 4.20. Proses awal
booting dimulai dari pembacaan dan eksekusi program yang tersimpan di ROM
komputer dan data setup yang tersimpan dalam CMOS. Bagian ini disebut POST
(Power On Self Test) apabila berhasil, maka perangkat lunak sistem BIOS yang berisi
program BIOS dari ROM dan BIOS dari adapter (misalnya dari VGA) akan dimuat ke
memori utama (RAM) dan dilanjutkan dengan pembacaan program start-up yang
Rekayasa Perangkat Lunak 73
tersimpan di dalam boot sector hard disk. Dari sini barulah sistem operasi dimuat dari
hard disk.

Gambar 4.20. Proses awal booting.

Pada sistem operasi seperti Microsoft Windows, kita tidak dapat melihat apa
yang terjadi ketika sistem operasi dimuat (mulai dijalankan). Kita hanya disuguhi
tampilan (biasanya logo) yang disebut sebagai boot-splash. Tetapi pada keluarga
Linux, kita dapat memilih apakah proses jalannya sistem operasi ditampilkan atau
tidak dengan mengkonfigurasi file boot-loader (biasanya menggunakan LILO atau
Grub). Gambar 4.21 menunjukkan proses booting pada Linux Fedora.

74 Sistem Operasi
Gambar 4.21 Proses booting pada Linux Fedora

4.3.3. Perintah berbasis teks


Bagi banyak orang bekerja dengan perintah berbasis teks (CLI) ketika
berhadapan dengan sistem operasi mungkin sangat menyulitkan karena harus
menghapal perintah dan mengetikkan perintah tersebut serta tampilan yang tidak
menarik. Namun sesungguhnya bekerja dengan memiliki keuntungan tersendiri,
antara lain:
• eksekusi perintah relative lebih cepat.
• hemat dalam penggunaan sumberdaya (terutama CPU dan memori utama).
• tidak bergantung pada perangkat keras dengan spesifikasi tinggi (terutama pada
VGA dan monitor).
Pada sistem operasi Microsoft Windows dan Apple Mac OS X, mode CLI
mungkin jarang digunakan, bahkan mungkin tidak pernah. Tetapi pada keluarga
Linux dan Unix, mode CLI ini tetap merupakan bagian penting, terutama untuk
administrasi sistem dan jaringan. Pada bagian ini kita akan membahas beberapa
perintah yang sering digunakan pada mode CLI di sistem operasi Linux. Untuk
menjalankan mode CLI ini dapat digunakan console atau terminal emulator yang
tersedia di Linux, seperti Konsole, xterm, aterm dan lain-lain (Gambar 4.22).

Rekayasa Perangkat Lunak 75


Gambar 4.22. Terminal sedang menjalankan mode CLI.

Ada dua kelompok utama dalam perintah-perintah mode CLI:


- Perintah yang berhubungan dengan administrasi sistem. Perintah-perintah yang
termasuk dalam kelompok ini biasanya hanya dapat dilaksanakan oleh pengguna
yang mempunyai hak sebagai administrator (root). Perintah-perintah yang
termasuk kelompok ini biasanya tersimpan di direktori /sbin (Gambar 4.23) dan
/usr/sbin (Gambar 4.24).
- Perintah untuk penggunaan biasa. Perintah ini dapat diakses oleh pengguna
biasa. Perintah-perintah yang termasuk kelompok ini biasanya tersimpan di
direktori /bin (Gambar 4.25) dan /usr/bin (Gambar 4.26).

76 Sistem Operasi
Gambar 4.23. Perintah-perintah pada direktori sbin.

Gambar 4.24. Perintah-perintah pada direktori /usr/sbin.

Rekayasa Perangkat Lunak 77


Gambar 4.25. Perintah-perintah pada direktori bin.

Gambar 4.26. Perintah-perintah pada direktori /usr/bin.

78 Sistem Operasi
Berikut ini beberapa perintah-perintah penting dalam mode CLI.
• Menampilkan isi direktori
Untuk menampilkan isi direktori dapat digunakan perintah ls diikuti dengan
argument lain. Beberapa contoh penggunaan dapat dilihat pada gambar 4.27.

Gambar 4.27. Contoh penggunaan perintah ls.

• Pindah direktori
Berpindah direktori dapat dilakukan dengan perintah cd diikuti lokasi dimana kita
mau berpindah. Beberapa contoh penggunaan dapat dilihat pada gambar 4.28.

Gambar 4.28. Contoh penggunaan perintah cd.

Rekayasa Perangkat Lunak 79


• Mencari file
Perintah find dapat digunakan untuk mencari file tertentu di lokasi yang
ditentukan. Beberapa contoh penggunaan dapat dilihat pada gambar 4.29.

Gambar 4.29. Contoh penggunaan perintah find.

• Menampilkan isi file


Untuk menampilkan isi file dapat digunakan perintah more, less atau cat diikuti
dengan nama filenya. Beberapa contoh penggunaan dapat dilihat pada gambar
4.30.

Gambar 4.30. Contoh penggunaan perintah cat dan more.

80 Sistem Operasi
• Menyalin file dan directory
Perintah cp bertujuan untuk menyalin file atau directory. Beberapa contoh
penggunaan dapat dilihat pada gambar 4.31.

Gambar 4.31. Contoh penggunaan perintah cp.

• Memindahkan file
Untuk memindahkan file dapat digunakan perintah mv. Beberapa contoh
penggunaan dapat dilihat pada gambar 4.32.

Gambar 4.32. Contoh penggunaan perintah mv untuk memindahkan file.

Rekayasa Perangkat Lunak 81


• Mengganti nama file
Perintah mv dapat juga digunakan untuk mengganti nama file. Beberapa contoh
penggunaan dapat dilihat pada gambar 4.33.

Gambar 4.33. Contoh penggunaan perintah mv untuk mengganti nama file.

• Menghapus file dan direktori


Perintah untuk menghapus file dan directory adalah rm. Beberapa contoh
penggunaan dapat dilihat pada gambar 4.34.

Gambar 4.34. Contoh penggunaan perintah rm untuk menghapus file atau


direktori.

• Membuat direktori
Perintah mkdir merupakan perintah untuk membuat directory baru. Beberapa
contoh penggunaan dapat dilihat pada gambar 4.35.

82 Sistem Operasi
Gambar 4.35. Contoh penggunaan perintah mkdir.

• Memahami hak akses file dan direktori


Pada sistem operasi windows, file dan direktori tidak memiliki file proteksi yang
cukup karena file dan direktori hanya mempunyai attribute yang terbatas
(Gambar 4.36).

Gambar 4.36. Attribute file / folder pada Microsoft WIndows

Pada gambar 4.36, tampak bahwa attribute file/direktori hanya memiliki attribute
Read-only dan Hiden. Apabila kotak pilihan Read-only dipilih, maka file hanya
akan dapat dibaca saja dan sebaliknya. Apabila kotak pilihan Hiden dipilih maka
file/direktori akan disembunyikan sehingga tidak tampak ketika dicari dengan
Windows Explorer.

Rekayasa Perangkat Lunak 83


Pada Unix dan keluarganya, termasuk linux, masalah attribute suatu file/direktori
diatur dengan sangat ketat. Hal ini untuk meningkatkan keamanan dan memberi
keleluasaan pada user untuk mengelola file dan direktori sesuai kebutuhannya.
Ada 4 bagian penting dalam suatu file / direktori, yaitu attribute, user atau
(owner) pemilik dari file tersebut, grup dimana user sebagai anggota dan nama
file/direktori.
Pada bagian attribute, ada penanda apakah itu direktori atau file biasa (ditandai
dengan huruf d untuk direktori atau tanda – untuk file biasa). Selanjutnya ada
sembilan kolom (karakter) yang menunjukkan hak akses terhadap file/direktori
tersebut. Tiga kolom pertama menunjukkan hak akses owner, tiga kolom
berikutnya hak akses grup dan tiga kolom terakhir adalah hak akser untuk other
(user lain diluar owner dan anggota grup). Huruf r menunjukkan file/direktori
bisa dibaca, w menunjukkan file/direktori bisa ditulis dan x menunjukkan
file/direktori bisa dieksekusi. Perhatikan Gambar 4.37 berikut ini.

Gambar 4.37. Attribute file / direktori pada keluarga Unix

Gambar 4.37 menunjukkan hal sebagai berikut:


o Desktop dan xml adalah direktori karena mempunyai tanda d,
sedangkan exports adalah file biasa karena bertanda -.
o Desktop dan xml mempunyai attribute drwxr-xr-x yang berarti owner
(yaitu one) mempunyai hak untuk membaca, menulis dan mengeksekusi
direktori ini. Sedangkan grup (yaitu users) mempunyai hak untuk
membaca dan mengeksekusi saja. Other (user lain) juga mempunyai
hak membaca dan mengeksekusi pada direktori ini.

84 Sistem Operasi
o exports mempunyai attribute -rw-r--r—yang berarti owner (yaitu one)
mempunyai hak untuk membaca dan menulis. Sedangkan grup dan
other hanya mempunyai hak untuk membaca saja.
Untuk merubah attribute file/direktori dapat digunakan perintah seperti pada
table berikut ini.
Tabel 4.1. Perintah yang berhubungan dengan pengelolaan file/direktori.
Perintah Fungsi
chgrp [options] group file Mengubah kepemilikan grup suatu
file/direktori
chmod [options] owner file Mengubah hak akses suatu file/direktori
chown [options] owner file Mengubah kepemilikan owner suatu
file/direktori

• Mengontrol proses
Proses merupakan bagian yang sangat penting dalam Linux sehingga perintah-
perintah yang berhubungan dengan proses menjadi penting untuk diketahui.
Untuk melihat proses yang sedang berjalan dapat digunakan perintah ps.
Perhatikan gambar 4.38 berikut ini.

Gambar 4.38. Eksekusi perintah ps.

Seperti terlihat pada gambar 4.38, perintah ps memiliki beberapa opsi (opsi
selengkapnya dapat dilihat dengan mengetikkan perintah man ps pada
terminal). Pada gambar tersebut ada dua proses yang sedang dijalankan oleh
user one (lihat bagian UID) yaitu bash dengan nomor proses (PID) 3605
dan ps –f dengan PID 3676.

Rekayasa Perangkat Lunak 85


Untuk menghentikan proses kita dapat menggunakan perintah kill diikuti nomor
prosesnya (PID). Misalnya : kill 3605 untuk menghentikan proses bash.

• Mengetahui ruang kosong pada disk


Kadang-kadang kita ingin mengetahui seberapa banyak sisa disk kita yang masih
ada. Untuk mengetahui hal ini dapat digunakan perintah df seperti terlihat pada
Gambar 4.39.

Gambar 4.39. Penggunaan perintah df.

Masih banyak sekali perintah yang digunakan dalam CLI di Linux. Jika kalian
ingin mengetahui arti suatu perintah coba ketikkan perintah man diikuti nama
perintah (Gambar 4.40).

Gambar 4.40. Contoh hasil eksekusi perintah man untuk melihat manual suatu
perintah.

86 Sistem Operasi
4.3.4. Bekerja dengan GUI
Secara umum bekerja dengan GUI pada sistem operasi sangat memudahkan
pengguna karena pengguna hanya membutuhkan kerja mouse untuk melakukan
sejumlah perintah. Mouse memiliki beberapa penggunaan, antara lain :
- klik satu kali digunakan untuk menunjuk satu file sebelum dilakukan operasi lain.
- Klik ganda (double-click) untuk mengeksekusi suatu perintah, misalnya membuka
folder dan menjalankan file yang bisa dieksekusi.
- Klik kanan untuk membuka konteks menu (Gambar 4.41)
- Drag and drop untuk memindahkan file dari satu tempat ke tempat lain (Gambar
4.42).

Gambar 4.41. Membuka konteks menu dengan klik kanan.

Rekayasa Perangkat Lunak 87


Gambar 4.42. Drag and drop.

4.4. BEKERJA DALAM KOMPUTER JARINGAN


Bekerja dalam komputer yang terhubung ke jaringan, saat ini bukanlah
sesuatu yang aneh. Hampir semua tempat yang memiliki banyak komputer, selalu
menggunakan jaringan sebagai sarana berkomunikasi. Oleh karena itu pengetahuan
dasar bagaimana dapat bekerja dalam komputer yang terhubung ke jaringan menjadi
sangat penting.

4.4.1. Persiapan
Ada tiga hal penting yang harus dipersiapkan dalam koneksi ke jaringan
komputer, yaitu perangkat keras, perangkat lunak dan akses ke jaringan.
o Perangkat keras
Kebutuhan perangkat keras sangat
bergantung pada tipe koneksi jaringan yang
akan digunakan. Untuk koneksi ke jaringan
LAN maka kebutuhan utama adalah NIC
(Network Interface Card) yang telah
terpasang dengan baik dan telah terinstal
driver yang sesuai dan kabel jaringan.
Untuk koneksi ke jaringan dengan cara dial-
up, dibutuhkan modem dan kabel telepon
Gambar 4.43. Network analog.
Interface Card

88 Sistem Operasi
Kita dapat melihat apakah perangkat keras jaringan (NIC, modem atau yang
lainnya) sudah terinstall dengan benar dengan memeriksa pada daftar perangkat
keras yang dikenali oleh komputer.
Pada sistem operasi Windows kita dapat melihat dengan cara klik kanan pada
icon My Computer di desktop kemudian pilih Properties pada menu yang muncul
(Gambar 4.44). Pada jendela System Properties pilih tab Hardware kemudian klik
pada Device Manager (Gambar 4.44), sehingga akan muncul jendela Device
Manager (Gambar 4.45).
Pada Gambar 4.45 terlihat bahwa network adapter yang digunakan oleh
komputer sudah dikenali dengan baik. Apabila kita menemukan gambar tanda
tanya pada suatu perangkat lunak berarti perangkat keras tersebut belum
dikenali dengan baik (lihat Gambar 4.45).
Pada sistem operasi Linux dan keluarganya kita dapat memeriksa apakah
perangkat keras sudah dikenali atau tidak dengan cara mengetikkan perintah
lspci (Gambar 4.46) dan ifconfig.

Gambar 4.44. Membuka system properties.

Rekayasa Perangkat Lunak 89


Gambar 4.45. Device manager.

Gambar 4.46. Output perintah lspci untuk memeriksa network adapter..

o Perangkat lunak
Perangkat lunak utama, selain sistem operasi adalah apakah paket TCP/IP sudah
terinstall dengan benar pada komputer. Pada sistem operasi windows dapat
dilakukan dengan double klik pada tipe koneksi, kemudian setelah jendela
properties muncul cek apakah sudah ada TCP/IP yang sudah terinstal (Gambar
4.47).

90 Sistem Operasi
Gambar 4.47. Memeriksa protocol TCP/IP.

o Akses ke jaringan
Akses jaringan ini berhubungan dengan hak atau kewenangan kita dalam
jaringan komputer yang akan kita masuki, terutama pemberian alamat IP (IP
Address) dan password untuk masuk ke jaringan. Pada jaringan yang
menerapkan DHCP maka kita tidak perlu khawatir karena no IP akan diberikan
langsung ketika komputer berhubungan ke jaringan. Apabila tidak menggunakan
DHCP maka kita harus memberikan no IP static yang diberikan oleh administrator
jaringan pada komputer.

4.4.2. Konfigurasi koneksi jaringan


Pada sistem operasi modern sekarang ini koneksi ke jaringan bukan pekerjaan
yang menyulitkan karena hampir semua koneksi telah dijalankan otomatis oleh sistem
operasi. Pada jaringan LAN yang menggunakan DHCP, komputer yang menggunakan
sistem operasi Windows (versi 2000 dan yang lebih baru) maupun Linux akan secara
otomatis terkoneksi ke jaringan dan memperoleh no IP dynamic. Pada sistem operasi
Windows, untuk memeriksa apakah komputer sudah tersambung ke jaringan kita bisa
melihat pada systray (notification area) yang terletak di bagian kanan bawah desktop
(Gambar 4.48).

Rekayasa Perangkat Lunak 91


Gambar 4.48. Kondisi koneksi jaringan.

4.4.3. Berbagi file, printer, dan sumber daya lain


Kelebihan utama dari jaringan komputer adalah penggunaan secara bersama
berbagai macam sumber daya, seperti: file, printer, media perekam (CD-RW atau
DVD-RW), scanner dan lain-lain. Pada bagian berikut ini akan dijelaskan bagaimana
berbagi file dan printer. Sumber daya yang lain dapat digunakan secara bersama-
sama dengan cara yang tidak jauh berbeda dengan file dan printer.

o Berbagi file
Direktori atau file yang ada pada komputer kita dapat diatur agar dapat
digunakan oleh komputer lain di dalam jaringan. Demikian pula sebaliknya kita
dapat menggunakan direktori atau file pada komputer lain di jaringan.
Untuk membagi (share) direktori atau file kita dapat menempuh cara berikut.
Buka Windows Explorer, kemudian klik kanan pada direktori atau file yang
akan kita share dan pilih Sharing and Security. Setelah muncul jendela
properties, pilih tab Sharing dan pada bagian Network sharing and
security cek pada Share this folder on the network dan beri nama untuk
direktori yang di-share (Gambar 4.49).

92 Sistem Operasi
Gambar 4.49. Mengatur file sharing.

Untuk bisa mengakses direktori atau file di komputer lain, kita bisa membuka
Windows Eksplorer kemudian klik pada My Network Places -> Entire Network ->
Microsoft Windows Network. Kita akan mendapati tampilan seperti pada Gambar
4.50. Dari sini kita bisa melihat sumber daya apa yang dibagi pada masing-
masing komputer yang terhubung ke jaringan dengan cara double klik pada
nama komputer.

Rekayasa Perangkat Lunak 93


Gambar 4.50. Menjelajah komputer yang ada di jaringan.

o Berbagi printer
Untuk dapat berbagi printer yang ada di komputer, cara yang hampir sama dapat
kita lakukan. Pertama kita buka jendela Printers and Faxes dengan cara Start ->
Settings -> Printers and Faxes. Setelah jendela terbuka, klik kanan pada printer
yang akan di share dan pilih Sharing …. Setelah jendela properties printer
terbuka, pilih tab Sharing dan klik pada Share this printer serta beri nama
(Gambar 4.51).

Gambar 4.51. Printer sharing.

94 Sistem Operasi
4.5. RINGKASAN
• Sistem Operasi adalah perangkat lunak yang bertugas mengelola
penggunaan sumberdaya dalam komputer dan menyediakan antarmuka
bagi pengguna untuk mengakses sumberdaya tersebut.
• Fungsi-fungsi system operasi adalah sebagai antar muka pengguna,
manajemen memori, manajemen file, manajemen proses dan manajemen
input/output
• Fungsi utama BIOS (Basic Input/Output System) adalah untuk
mengidentifikasi dan mengenali perangkat keras komputer.
• Ada beberapa sistem operasi yang dikenal yaitu DOS, Windows, Mac OS,
UNIX dan Linux.
• Setiap sistem operasi yang akan dijalankan harus diinstal terlebih dahulu.
• Sistem operasi dapat menggunakan perintah berbasis teks atau GUI
tergantung pada konfigurasi dan fasilitas yang dipunyai oleh system
operasi tersebut.

4.6. SOAL-SOAL LATIHAN


1. Sebutkan pengertian sistem operasi.
2. Jelaskan fungsi-fungsi sistem operasi.
3. Bagaimanakah tahapan-tahapan proses booting suatu computer?
4. Cobalah instalasi satu distro sistem operasi linux pada sebuah computer dan
cermati jalannya instalasi. Kemudian bandingkan dengan proses instalasi
pada sistem Windows. Menurut kalian apakah ada perbedaan penting dalam
proses instalasi kedua sistem operasi tersebut?
5. Cobalah booting pada system operasi Linux, kemudian cermati jalannya
proses booting dan bandingkan dengan proses booting pada Windows.
Bagaimanakah menurut kalian perbedaannya?.
6. Jalankan system operasi Linux, kemudian bukalah jendela terminal terminal.
Lakukan serangkaian perintah dengan menggunakan perintah ls, cd, find, cat,
cp, mv, dan mkdir. Catatlah apa yang kalian temui ketika menjalankan
perintah-perintah tersebut.
7. Sebuah file mempunyai atribut –rw-r--r-- dan dimiliki oleh user bernama
rony. Apakah arti dari atribut tersebut. Bagaimanakah caranya jika ada user
lain supaya bias mempunyai hak akses membaca dan menulis pada file
tersebut?

Rekayasa Perangkat Lunak 95


96 Sistem Operasi
Perangko dari Rusia pada Gambar 5.1.
di samping ini bergambar seorang pria
dengan nama Muhammad ibn Mūsā al-
Khwārizmī. Bagi kalian yang sedang
berkecimpung dalam dunia komputer maka
seharusnya mengetahui siapa orang di
samping ini. Dia adalah seorang ilmuwan
Islam yang karya-karyanya dalam bidang
matematika, astronomi, astrologi dan
geografi banyak menjadi dasar
perkembangan ilmu modern. Dan dari
namanya istilah yang akan kita pelajari dalam
bab ini muncul. Dari Al-Khawarizmi
kemudian berubah menjadi algorithm dalam
Bahasa Inggris dan diterjemahkan menjadi
algoritma dalam Bahasa Indonesia.
Standar kompetensi algoritma
pemrograman dasar terdiri atas empat (Sumber: www.wikipedia.org)
kompetensi dasar. Dalam penyajian pada
Gambar 5.1. Perangko bergambar
buku ini, setiap kompetensi dasar memuat
Muhammad ibn Mūsā al-Khwārizmī.
uraian materi, dan latihan. Ringkasan
diletakkan pada setiap akhir bab.
Kompetensi dasar pada bab ini adalah menjelaskan variabel, konstanta dan tipe data,
membuat algoritma/logika alur pemrograman, menerapkan pengelolaan array, dan
mengoperasikan file. Sebelum mempelajari kompetensi ini ingatlah kembali sistem
operasi, prinsip pemecahan masalah, dan materi-materi pendukung dari mata
pelajaran matematika.
Pada akhir bab, tercantum soal-soal latihan yang disusun dari soal-soal yang
mudah hingga soal-soal yang sulit. Latihan soal ini digunakan untuk mengukur
kemampuan terhadap kompetensi dasar ini. Artinya setelah mempelajari kompetensi
dasar ini secara mandiri dengan bimbingan guru sebagai fasilitator, ukurlah sendiri
kemampuan dengan mengerjakan soal-soal latihan tersebut.

Rekayasa Perangkat Lunak 97


TUJUAN
Setelah mempelajari bab ini diharapkan pembaca akan mampu :
o Menjelaskan variabel, konstanta dan tipe data
o Membuat algoritma/logika alur pemrograman
o Menerapkan pengelolaan array
o Mengoperasikan file

5.1. VARIABEL, KONSTANTA DAN TIPE DATA


Variabel, konstanta dan tipe data merupakan tiga hal yang akan selalu kita
jumpai ketika kita membuat program. Bahasa pemrograman apapun dari yang paling
sederhana sampai yang paling kompleks, mengharuskan kita untuk mengerti ketiga
hal tersebut.

5.1.1. Variabel
Variabel adalah tempat dimana kita dapat mengisi atau mengosongkan
nilainya dan memanggil kembali apabila dibutuhkan. Setiap variabel akan mempunyai
nama (identifier) dan nilai. Perhatikan contoh berikut.
Contoh 5.1. Nama variabel dan nilai.
username = “joni”
Nama = “Al-Khawarizmi”
Harga = 2500
HargaTotal = 34000

Pada contoh 5.1. di atas, username, Nama, harga dan HargaTotal adalah
nama dari variabel sedangkan “joni”, “Al-Khawarizmi”, 2500 dan 34000
adalah nilai dari masing-masing variabel. Nilai-nilai ini akan tersimpan di dalam nama
variabel masing-masing sepanjang tidak kita rubah.
Pada sebagian besar bahasa pemrograman, variabel harus dideklarasikan lebih
dulu untuk mempermudah compiler bekerja. Apabila variabel tidak dideklarasikan
maka setiap kali compiler bertemu dengan variabel baru pada kode program akan
terjadi waktu tunda karena compiler harus membuat variabel baru. Hal ini
memperlambat proses kerja compiler. Bahkan pada beberapa bahasa pemrograman,
compiler akan menolak untuk melanjutkan proses kompilasi.
Pemberian nama variabel harus mengikuti aturan yang ditetapkan oleh bahasa
pemrograman yang kita gunakan. Namun secara umum ada aturan yang berlaku
untuk hampir semua bahasa pemrograman. Aturan-aturan tersebut yaitu:
• Nama variabel harus diawali dengan huruf.
• Tidak boleh menggunakan spasi pada satu nama variabel. Spasi bisa diganti
dengan karakter underscore (_).

98 Algoritma Pemrograman Dasar


• Nama variabel tidak boleh mengandung karakter-karakter khusus, seperti :
.,+, -, *, /, <, >, &, (, ) dan lain-lain.
• Nama variabel tidak boleh menggunakan kata-kata kunci d bahasa
pemrograman
Contoh 5.2. Contoh penamaan variabel.
Penamaan yang benar Penamaan yang salah
namasiswa nama siswa (salah karena menggunakan spasi)
XY12 12X (salah karena dimulai dengan angka)
harga_total harga.total (salah karena menggunakan karakter .)
JenisMotor Jenis Motor (salah karena menggunakan spasi)
alamatRumah for (salah karena menggunakan kata kunci bahasa
pemrograman)

5.1.2. Konstanta
Konstanta adalah variabel yang nilai datanya bersifat tetap dan tidak bisa
diubah. Jadi konstanta adalah juga variabel bedanya adalah pada nilai yang
disimpannya. Jika nilai datanya sepanjang program berjalan tidak berubah-ubah,
maka sebuah varibel lebih baik diperlakukan sebagai konstanta. Pada sebuah kode
program, biasanya nilai data dari konstanta diberikan langsung di bagian deklarasi
konstanta. Sedangkan untuk variabel biasanya hanya ditentukan nama variabel dan
tipe datanya tanpa isian nilai data. Aturan penamaan variabel juga berlaku untuk
penamaan konstanta. Demikian juga aturan penetapan tipe data.
Sebagai contoh, jika kita membuat program perhitungan matematik yang
menggunakan nilai pi (3.14159) yang mungkin akan muncul dibanyak tempat pada
kode program, kita dapat membuat pi sebagai konstanta. Penggunaan konstanta pi
akan lebih memudahkan penulisan kode program dibanding harus mengetikkan nilai
3.14159 berulang-ulang.

5.1.3. Tipe Data


Tipe data adalah jenis data yang dapat diolah oleh komputer untuk memenuhi
kebutuhan dalam pemrograman komputer. Setiap variabel atau konstanta yang ada
dalam kode program, sebaiknya kita tentukan dengan pasti tipe datanya. Ketepatan
pemilihan tipe data pada variabel atau konstanta akan sangat menentukan pemakaian
sumberdaya komputer (terutama memori komputer). Salah satu tugas penting
seorang programmer adalah memilih tipe data yang sesuai untuk menghasilkan
program yang efisien dan berkinerja tinggi.
Ada banyak tipe data yang tersedia tergantung jenis bahasa pemrograman
yang dipakai. Namun secara umum dapat dikelompokkan seperti pada Gambar 5.2.

Rekayasa Perangkat Lunak 99


Gambar 5.2. Pengelompokkan tipe data.

Tipe data primitive adalah tipe data dasar yang tersedia secara langsung pada
suatu bahasa pemrograman. Sedangkan tipe data composite adalah tipe data
bentukan yang terdiri dari dua atau lebih tipe data primitive.
• Tipe data numeric
Tipe data numeric digunakan pada variabel atau konstanta untuk menyimpan
nilai dalam bentuk bilangan atau angka. Semua bahasa pemrograman menyediakan
tipe data numeric, hanya berbeda dalam jenis numeric yang diakomodasi.
Jenis yang termasuk dalam tipe data numeric antara lain integer (bilangan
bulat), dan float (bilangan pecahan). Selain jenis, dalam bahasa pemrograman juga
diterapkan presisi angka yang digunakan, misalnya tipe data Single adalah tipe data
untuk bilangan pecahan dengan presisi yang terbatas, sedangkan tipe data Double
adalah tipe data untuk bilangan pecahan dengan presisi yang lebih akurat. Pada bab-
bab berikutnya yang membahas aplikasi bahasa pemrograman bagian ini akan
diuraikan lebih lanjut.
100 Algoritma Pemrograman Dasar
Penentuan tipe data numeric untuk suatu variabel/konstanta harus sangat
berhati-hati. Manual dan petunjuk pada masing-masing bahasa pemrograman pada
bagian tipe data harus diperhatikan dengan seksama. Perhatikan contoh berikut.
Contoh 5.3. Penggunaan tipe data numeric.
Kode Program A Hasil eksekusi Program A
#include <iostream> X =12
using namespace std; Y =2.15
int main() { Z =25
int x, z;
float y;
x = 12;
y = 2.15;
z = x * y;
cout << "X =" << x << endl;
cout << "Y =" << y << endl;
cout << "Z =" << z << endl;
return 0; }

Kode Program B Hasil eksekusi Program B


#include <iostream> X =12
using namespace std; Y =2.15
int main() { Z =25.8
int x;
float y, z;
x = 12.8;
y = 2.15;
z = x * y;
cout << "X =" << x << endl;
cout << "Y =" << y << endl;
cout << "Z =" << z << endl;
return 0; }

Kode Program C Hasil eksekusi Program C


#include <iostream> X =12
using namespace std; Y =2.15
int main() { Z =25.8
int x;
float y, z;
x = 12;
y = 2.15;
z = x * y;
cout << "X =" << x << endl;
cout << "Y =" << y << endl;
cout << "Z =" << z << endl;
return 0; }

Rekayasa Perangkat Lunak 101


Ketiga kode program di atas (A, B dan C) ditulis dengan bahasa C++. Sekilas
sama namun berbeda pada penggunaan tipe data dan pengisian nilai. Pada kode
program A, variabel x dan z kita deklarasikan bertipe data int (Integer = bilangan
bulat) dan y bertipe data float (pecahan). Hasil eksekusi program A menunjukkan
hasil yang tidak kita inginkan. Nilai z yang merupakan perkalian x dengan y harusnya
bernilai 25.8 (hasil dari 12 x 2.15). Namun karena z dideklarasikan bertipe data int
maka hasilnya menjadi 25. Dari ketiga kode program di atas yang paling benar
adalah kode program C. Mengapa kode program B salah? Cobalah cermati bagian
kode yang dicetak tebal kemudian tentukan dimana terjadi kesalahan.

• Character
Bersama dengan tipe data numeric, character merupakan tipe data yang paling
banyak digunakan. Tipe data character kadang disebut sebagai char atau string.
Tipe data string hanya dapat digunakan menyimpan teks atau apapun sepanjang
berada dalam tanda petik dua (“…”) atau petik tunggal (‘…’). Perhatikan contoh
berikut.
Contoh 5.4. Penggunaan tipe data character.
Kode program Hasil eksekusi program
#include <iostream> X = 5
using namespace std; Isi variabel huruf =
A
int main() { Isi variabel kata =
int x; Java
x = 5;
char huruf = 'A';
char* kata = "Java";

cout << "X = " << x << endl;


cout << "Isi variabel huruf = " <<
huruf << endl;
cout << "Isi variabel kata = " <<
kata << endl;
return 0; }

Pada contoh ini kita mendeklarasikan variabel x sebagai int (Integer),


sedangkan variabel huruf dan kata bertipe data char (character). Perhatikan hasil
eksekusi kode program di atas.

• Boolean
Tipe data Boolean digunakan untuk menyimpan nilai True/False
(Benar/Salah). Pada sebagian besar bahasa pemrograman nilai selain 0 menunjukkan
True dan 0 melambangkan False. Tipe data ini banyak digunakan untuk pengambilan
keputusan pada struktur percabangan dengan IF … THEN atau IF … THEN … ELSE.

102 Algoritma Pemrograman Dasar


• Array
Array atau sering disebut sebagai larik adalah tipe data yang sudah
terstruktur dengan baik, meskipun masih sederhana. Array mampu menyimpan
sejumlah data dengan tipe yang sama (homogen) dalam sebuah variabel. Setiap
lokasi data array diberi nomor indeks yang berfungsi sebagai alamat dari data
tersebut. Penjelasan tentang array akan disampaikan lebih detil pada bagian lain dari
bab ini.

• Record atau Struct


Seperti halnya Array, Record atau Struct adalah termasuk tipe data komposit.
Record dikenal dalam bahasa Pascal/Delphi sedangkan Struct dikenal dalam bahasa
C++. Berbeda dengan array, tipe data record mampu menampung banyak data
dengan tipe data berbeda-beda (heterogen). . Sebagai ilustrasi array mampu
menampung banyak data namun dengan satu tipe data yang sama, misalnya integer
saja. Sedangkan dalam record, kita bisa menggunakan untuk menampung banyak
data dengan tipe data yang berbeda, satu bagian integer, satu bagian lagi character,
dan bagian lainnya Boolean. Biasanya record digunakan untuk menampung data
suatu obyek. Misalnya, siswa memiliki nama, alamat, usia, tempat lahir, dan tanggal
lahir. Nama akan akan menggunakan tipe data string, alamat bertipe data string, usia
bertipe data single (numeric), tempat lahir bertipe data string dan tanggal lahir
bertipe data date. Berikut ini contoh pendeklarasian record dalam Delphi.
Contoh 5.5. Deklarasi tipe data record pada Delphi.
Type TRecord_Siswa = Record
Nama_Siswa : String[30]
Alamat : String[50]
Usia : Real
EndRecord

• Image
Image atau gambar atau citra merupakan tipe data grafik. Misalnya grafik
perkembangan jumlah siswa SMK, foto keluarga kita, video perjalanan dan lain-lain.
Pada bahasa-bahasa pemrograman modern terutama yang berbasis visual tipe data
ini telah didukung dengan sangat baik.

• Date Time
Nilai data untuk tanggal (Date) dan waktu (Time) secara internal disimpan
dalam format yang spesifik. Variabel atau konstanta yang dideklarasikan dengan tipe
data Date dapat digunakan untuk menyimpan baik tanggal maupun jam. Tipe data ini
masuk dalam kelompok tipe data composite karena merupakan bentukan dari
beberapa tipe data. Berikut ini contoh tipe data dalam Visual Basic.

Rekayasa Perangkat Lunak 103


Contoh 5.6. Penggunaan tipe data date time pada Visual Basic.
Dim WaktuLahir As Date
WaktuLahir = “01/01/1997”
WaktuLahir = “13:03:05 AM”
WaktuLahir = “02/23/1998 13:13:40 AM”
WaktuLahir = #02/23/1998 13:13:40 AM#

• Tipe data lain


o Subrange
Tipe data subrange merupakan tipe data bilangan yang mempunyai
jangkauan nilai tertentu sesuai dengan yang ditetapkan programmer.
Biasanya tipe data ini mempunyai nilai batas minimum dan nilai batas
maksimum. Tipe data ini didukung dengan sangat baik dalam Delphi. Berikut
ini contoh deklarasi tipe data subrange dalam Delphi.
Contoh 5.7. Deklarasi tipe data subrange pada Delphi.
Type
BatasIndeks = 1..20
RentangTahun = 1950..2030
Var
Indeks : BatasIndeks
Tahun : RentangTahun
o Enumerasi
Tipe data ini merupakan tipe data yang mempunyai elemen-elemen yang
harus disebut satu persatu dan bernilai konstanta integer sesuai dengan
urutannya. Nilai konstanta integer elemen ini diwakili oleh suatu nama
variable yang ditulis di dalam kurung. Tipe data ini juga dijumpai pada Delphi
dan bahasa pemrograman deklaratif seperti SQL. Berikut ini contoh deklarasi
tipe data enumerasi dalam Delphi.
Contoh 5.8. Penggunaan tipe data enumerasi.
Type
Hari_dlm_Minggu = (Nol, Senin, Selasa, Rabu,
Kamis, Jumat, Sabtu, Minggu)
Nama_Bulan = (Nol, Januari, Pebruari, Maret,
April, Mei, Juni, Juli, Agustus,
September, Oktober, Nopember,
Desember)
Var
No_Hari : Hari_dlm_Minggu
No_Bulan : Nama_Bulan
Pada contoh di atas tipe data Hari_dlm_Minggu termasuk enumerasi dengan
rentang nilai Nol, Senin sampai dengan Minggu dan nilai data dari 0, 1,
sampai dengan 7. Sedangkan tipe data Nama_Bulan termasuk enumerasi

104 Algoritma Pemrograman Dasar


dengan rentang nilai Nol, Januari sampai dengan Desember dan nilai data dari
0, 1, sampai dengan 12.
o Object
Tipe data object digunakan untuk menyimpan nilai yang berhubungan dengan
obyek-obyek yang disediakan oleh Visual Basic, Delphi dan dan bahasa
pemrograman lain yang berbasis GUI. Sebagai contoh, apabila kita
mempunyai form yang memiliki control Command button yang kita beri nama
Command1, kita dapat mendeklarasikan variabel sebagai berikut :
Contoh 5.9. Penggunaan tipe data object.
Dim A As CommandButton
Set A = Command1
A.Caption = “HEY!!!”
A.FontBold = True
Pada contoh ini variabel A dideklarasikan bertipe data Object yaitu
CommandButton. Kemudian kita set variabel A dengan control Command
button yang ada pada form (Command1). Dengan cara ini kita dapat
mengakses seluruh property, method dan event obyek Command1 dengan
menggunakan variabel A.
o Variant
Tipe data hanya ada di Visual Basic. Tipe ini adalah tipe data yang paling
fleksibel di antara tipe data yang lain, karena dapat mengakomodasi semua
tipe data yang lain seperti telah dijelaskan.

5.2. STRUKTUR ALGORITMA PEMROGRAMAN

5.2.1. Pengertian Algoritma


Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang
disusun secara sistematis. Masalah dapat berupa apa saja, dengan catatan untuk
setiap masalah, ada syarat kondisi awal yang harus dipenuhi sebelum menjalankan
algoritma. Konsep algoritma sering kali disetarakan dengan sebuah resep. Sebuah
resep biasanya memiliki daftar bahan atau bumbu yang akan digunakan, urutan
pengerjaan dan bagaimana hasil dari urutan pengerjaan tersebut. Apabila bahan
yang digunakan tidak tertera (tidak tersedia) maka resep tersebut tidak akan dapat
dikerjakan. Demikian juga jika urutan pengerjaannya tidak beraturan, maka hasil
yang diharapkan tidak akan dapat diperoleh.
Algoritma yang berbeda dapat diterapkan pada suatu masalah dengan syarat
yang sama. Tingkat kerumitan dari suatu algoritma merupakan ukuran seberapa
banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah.
Umumnya, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu
yang singkat memiliki tingkat kerumitan yang rendah, sementara algoritma yang

Rekayasa Perangkat Lunak 105


membutuhkan waktu lama untuk menyelesaikan suatu masalah membutuhkan tingkat
kerumitan yang tinggi.
Perhatikan algoritma sederhana berikut.
Contoh 5.10. Algoritma menghitung luas segitiga.
1. Start
2. Baca data alas dan tinggi.
3. Luas adalah alas kali tinggi kali 0.5
4. Tampilkan Luas
5. Stop
Algoritma di atas adalah algoritma yang sangat sederhana, hanya ada lima
langkah. Pada algoritma ini tidak dijumpai perulangan ataupun pemilihan. Semua
langkah dilakukan hanya satu kali.
Sekilas algoritma di atas benar, namun apabila dicermati maka algoritma ini
mengandung kesalahan yang mendasar, yaitu tidak ada pembatasan pada nilai data
untuk alas dan tinggi. Bagaimana jika nilai data alas atau tinggi adalah bilangan 0
atau bilangan negatif ? Tentunya hasil yang keluar menjadi tidak sesuai dengan yang
diharapkan. Dalam kasus seperti ini kita perlu menambahkan langkah untuk
memastikan nilai alas dan tinggi memenuhi syarat, misalnya dengan melakukan
pengecekan pada input yang masuk. Apabila input nilai alas dan tinggi kurang dari 0
maka program tidak akan dijalankan. Sehingga algoritma di atas dapat dirubah
menjadi seperti contoh berikut.
Contoh 5.11. Hasil perbaikan algoritma perhitungan luas segitiga.
1. Start
2. Baca data alas dan tinggi.
3. Periksa data alas dan tinggi, jika nilai data alas dan
tinggi lebih besar dari nol maka lanjutkan ke langkah ke
4 jika tidak maka stop
4. Luas adalah alas kali tinggi kali 0.5
5. Tampilkan Luas
6. Stop
Dari penjelasan di atas dapat diambil kesimpulan pokok tentang algoritma.
Pertama, algoritma harus benar. Kedua algoritma harus berhenti, dan setelah
berhenti, algoritma memberikan hasil yang benar.

5.2.2. Cara Penulisan Algoritma


Ada tiga cara penulisan algoritma, yaitu :
• Structured English (SE)
SE merupakan alat yang cukup baik untuk menggambarkan suatu algoritma.
Dasar dari SE adalah Bahasa Inggris, namun kita dapat memodifikasi dengan
Bahasa Indonesia sehingga kita boleh menyebutnya sebagai Structured Indonesian
(SI). Algoritma seperti pada Contoh 5.10 dan 5.11 merupakan algoritma yang

106 Algoritma Pemrograman Dasar


ditulis menggunakan SI. Karena dasarnya adalah bahasa sehari-hari, maka SE
atau SI lebih tepat untuk menggambarkan suatu algoritma yang akan
dikomunikasikan kepada pemakai perangkat lunak.

• Pseudocode
Pseudocode mirip dengan SE. Karena kemiripan ini kadang-kadang SE dan
Pseudocode dianggap sama. Pseudo berarti imitasi atau tiruan atau menyerupai,
sedangkan code menunjuk pada kode program. Sehingga pseudocode adalah
kode yang mirip dengan instruksi kode program sebenarnya. Pseudocode
didasarkan pada bahasa pemrograman yang sesungguhnya seperti BASIC,
FORTRAN atau PASCAL. Pseudocode yang berbasis bahasa PASCAL merupakan
pseudocode yang sering digunakan. Kadang-kadang orang menyebut pseudocode
sebagai PASCAL-LIKE algoritma. Apabila Contoh 5.10 ditulis dalam pseudocode
berbasis bahasa BASIC akan tampak seperti pada contoh 5.12.
Contoh 5.12. Pseudocode.
1. Start
2. READ alas, tinggi
3. Luas = 0.5 * alas * tinggi
4. PRINT Luas
5. Stop
Pada Contoh 5.12 tampak bahwa algoritma sudah sangat mirip
dengan bahasa BASIC. Pernyataan seperti READ dan PRINT merupakan
keyword yang ada pada bahasa BASIC yang masing-masing menggantikan kata
“baca data” dan “tampilkan”. Dengan menggunakan pseudocode seperti di atas
maka proses penterjemahan dari algoritma ke kode program menjadi lebih mudah.

• Flowchart
Flowchart atau bagan alir adalah skema/bagan (chart) yang menunjukkan
aliran (flow) di dalam suatu program secara logika. Flowchart merupakan alat
yang banyak digunakan untuk menggambarkan algoritma dalam bentu notasi-
notasi tertentu. Secara lebih detil bagian ini akan dibahas pada bagian berikutnya.
Pada flowchart ada beberapa simbol penting yang digunakan untuk
membuat algoritma sebagaimana tercantum pada Gambar 5.3.

Rekayasa Perangkat Lunak 107


Notasi ini disebut Terminator yang berarti
digunakan untuk menunjukkan awal dan akhir
suatu algoritma
Notasi ini disebut Data yang digunakan untuk
mewakili data input atau output atau menyatakan
operasi pemasukan data dan pencetakan hasil.
Notasi ini disebut Process yang digunakan untuk
mewakili suatu proses.

Notasi ini disebut Decision yang digunakan untuk


suatu pemilihan, penyeleksian kondisi di dalam
suatu program

Notasi ini disebut Preparation yang digunakan


untuk memberi nilai awal, nilai akhir,
penambahan/pengurangan bagi suatu variable
counter.
Notasi ini disebut Predefined Process yang
digunakan untuk menunjukkan suatu operasi
yang rinciannya ditunjukkan ditempat lain
(prosedur, sub-prosedur, fungsi)
Notasi ini disebut Connector yang digunakan
untuk menunjukkan sambungan dari flowchart
yang terputus di halaman yang sama atau
haraman berikutnya.
Notasi ini disebut Arrow yang digunakan untuk
menunjukkan arus data atau aliran data dari
proses satu ke proses lainnya.

Gambar 5.3. Simbol-simbol yang digunakan dalam flowchart.

Program Flowchart dapat terdiri dari dua macam, yaitu bagan alir logika
program (program logic flowchart) dan bagan alir program komputer terinci (detailed
computer program flowchart). Bagan alir logika program digunakan untuk
menggambarkan tiap-tiap langkah di dalam program komputer secara logika dan
biasanya dipersiapkan oleh seorang analis system. Sedangkan bagan alir program
komputer terinci digunakan untuk menggambarkan instruksi-instruksi program
komputer secara terinci dan biasanya dipersiapkan oleh seorang programmer. Apabila
Contoh 5.10 dibuat program flowchartnya maka akan tampak pada gambar 5.4.

108 Algoritma Pemrograman Dasar


Bagan alir logika program Bagan alir program komputer terinci

Gambar 5.4. Program flowchart.

5.2.3. Struktur Algoritma Berurutan


Ada tiga struktur dasar yang digunakan
dalam membuat algoritma yaitu struktur
berurutan (sequencing), struktur
pemilihan/keputusan/percabangan (branching)
dan struktur pengulangan (looping). Sebuah
algoritma biasanya akan menggabungkan ketiga
buah struktur ini untuk menyelesaikan masalah.
Pada bagian ini kita akan bahas lebih dulu
struktur algoritma berurutan. Struktur berurutan
dapat kita samakan dengan mobil yang sedang
berjalan pada jalur lurus yang tidak terdapat
persimpangan seperti tampak pada Gambar 5.5.
Mobil tersebut akan melewati kilometer demi
kilometer jalan sampai tujuan tercapai.
Gambar 5.5. Mobil sedang
Struktur berurutan terdiri satu atau lebih
berjalan pada jalur lurus.
instruksi. Tiap instruksi dikerjakan secara

Rekayasa Perangkat Lunak 109


berurutan sesuai dengan urutan penulisannya, yaitu sebuah instruksi dieksekusi
setelah instruksi sebelumnya selesai dieksekusi. Urutan instruksi menentukan
keadaan akhir dari algoritma. Bila urutannya diubah, maka hasil akhirnya mungkin
juga berubah. Menurut Goldshlager dan Lister (1988) struktur berurutan mengikuti
ketentuan-ketentuan sebagai berikut:
• tiap instruksi dikerjakan satu persatu
• tiap instruksi dilaksanakan tepat sekali, tidak ada yang diulang
• urutan instruksi yang dilaksanakan pemroses sama dengan urutan aksi
sebagaimana yang tertulis di dalam algoritmanya
• akhir dari instruksi terakhir merupakan akhir algoritma.
Contoh 5.13. Flowchart untuk menghitung luas bangun.
Buatlah flowchart untuk menghitung:
a. volume balok
b. luas lingkaran
Penyelesaian:
Soal ini merupakan permasalahan dengan algoritma struktur berurutan karena
tidak ada proses pemilihan atau pengulangan. Untuk volume balok, kita harus
menentukan variabel input dan output yang dibutuhkan. Untuk menghitung
volume balok dibutuhkan variabel input panjang, lebar dan tinggi. Sedangkan
variabel outputnya adalah volume. Pada luas lingkaran dibutuhkan variabel
input radius dan variabel output luas. Untuk menghitung luas lingkaran ini kita
juga membutuhkan konstanta phi. Flowchart untuk dua masalah ini dapat
dilihat pada Gambar 5.6.

Contoh 5.14. Flowchart untuk konversi suhu.


Buat flowchart untuk mengubah temperatur dalam Fahrenheit menjadi temperatur
dalam Celcius dengan rumus oC = 5/9 x (oF -32).
Penyelesaian:
Soal ini juga masih menggunakan algoritma dengan struktur berurutan.
Variabel input yang dibutuhkan adalah F dan variabel outputnya adalah C.
Flowchart untuk dua masalah ini dapat dilihat pada Gambar 5.7.

110 Algoritma Pemrograman Dasar


a. flowchart menghitung b. flowchart menghitung
volume balok luas lingkaran
Gambar 5.6. Flowchart menghitung volume balok dan Gambar 5.7. Flowchart
luas lingkaran. untuk konversi suhu.

5.2.4. Struktur Algoritma Percabangan


Sebuah program tidak selamanya akan
berjalan dengan mengikuti struktur berurutan,
kadang-kadang kita perlu merubah urutan
pelaksanaan program dan menghendaki agar
pelaksanaan program meloncat ke baris tertentu.
Peristiwa ini kadang disebut sebagai
percabangan/pemilihan atau keputusan. Hal ini
seperti halnya ketika mobil berada dalam
persimpangan seperti pada Gambar 5.7.
Pengemudi harus memutuskan apakah harus
menempuh jalur yang kanan atau yang kiri.
Pada struktur percabangan, program akan
Gambar 5.8. Mobil sedang
berpindah urutan pelaksanaan jika suatu kondisi
dalam persimpangan.
yang disyaratkan dipenuhi. Pada proses seperti
ini simbol flowchart Decision harus digunakan.
Rekayasa Perangkat Lunak 111
Simbol decision akan berisi pernyataan yang akan diuji kebenarannya. Nilai hasil
pengujian akan menentukan cabang mana yang akan ditempuh.
Contoh 5.15. Struktur percabangan untuk masalah batasan umur.
Sebuah aturan untuk menonton sebuah film tertentu adalah sebagai berikut, jika usia
penonton lebih dari 17 tahun maka penonton diperbolehkan dan apabila kurang dari
17 tahun maka penonton tidak diperbolehkan nonton. Buatlah flowchart untuk
permasalahan tersebut.
Penyelesaian:
Permasalahan diatas merupakan ciri permasalahan yang menggunakan struktur
percabangan. Hal ini ditandai dengan adanya pernyataan jika .. maka ...(atau If
... Then dalam Bahasa Inggris.
Flowchart penyelesaian masalah tampak pada Gambar 5.9. Pada gambar
tersebut, tampak penggunaan simbol Decision. Pada simbol ini terjadi
pemeriksaan kondisi, yaitu apakah usia lebih dari 17 tahun atau tidak. Jika
jawaban ya maka program akan menghasilkan keluaran teks “Silahkan
Menonton”, sedangkan jika input usia kurang dari 17 tahun maka program akan
menghasilkan keluaran teks “Anda Tidak Boleh Menonton”.

Gambar 5.9. Flowchart penyelesaian masalah nonton film.

112 Algoritma Pemrograman Dasar


Contoh 5.16. Struktur percabangan untuk perhitungan dua buah bilangan.
Dalam suatu perhitungan nilai P = X + Y. Jika P positif, maka Q = X * Y, sedangkan
jika negative maka nilai Q = X/Y. Buatlah flowchart untuk mencari nilai P dan Q
Penyelesaian:
Pada contoh ini input yang dibutuhkan adalah nilai X dan Y, sedangkan proses
pemeriksaan kondisi dilakukan pada nilai P apakah positif (termasuk 0) ataukah
negative. Perhatikan flowchart penyelesaian masalah pada Gambar 5.10.

Gambar 5.10. Flowchart penyelesaian untuk perhitungan dua buah bilangan.

Kedua contoh di atas (5.15 dan 5.16) merupakan contoh struktur percabangan
sederhana yang melibatkan hanya satu percabangan. Pada masalah-masalah yang
lebih rumit, kita akan menjumpai lebih banyak percabangan. Kita juga akan
menjumpai suatu struktur percabangan berada di dalam struktur percabangan yang
lain, atau yang biasa disebut nested (bersarang). Perhatikan contoh-contoh berikut.

Rekayasa Perangkat Lunak 113


Contoh 5.17. Struktur percabangan bersarang untuk masalah fotokopi.
Sebuah usaha fotokopi mempunyai aturan sebagai berikut :
- jika yang fotokopi statusnya adalah langganan, maka berapa lembar pun dia
fotokopi, harga perlembarnya Rp. 75,-
- jika yang fotokopi bukan langganan, maka jika dia fotokopi kurang dari 100
lembar harga perlembarnya Rp. 100,-. Sedangkan jika lebih atau sama dengan
100 lembar maka harga perlembarnya Rp. 85,-.
Buat flowchart untuk menghitung total harga yang harus dibayar jika seseorang
memfotokopi sejumlah X lembar.
Penyelesaian:
Pada contoh ini, masalah terlihat lebih rumit. Ada dua percabangan yang terjadi.
Yang pertama adalah pemeriksaan apakah status seseorang pelanggan atau
bukan. Kedua, apabila status seseorang bukan pelanggan, maka dilakukan
pemeriksaan berapa jumlah lembar fotokopi, apakah lebih dari 100 lembar atau
tidak.
Pada soal ini kita juga menjumpai apa yang disebut sebagai nested. Perhatikan
pernyataan pada syarat kedua dari persoalan di atas.
jika yang fotokopi bukan langganan, maka jika dia fotokopi kurang dari 100
lembar harga perlembarnya Rp. 100
pernyataan jika yang kedua berada di dalam jika yang pertama.
Input yang dibutuhkan untuk permasalahan ini adalah status orang yang fotokopi
dan jumlah lembar yang difotokopi. Sehingga variable input yang digunakan
adalah:
- Status untuk status orang yang fotokopi
- JLF untuk jumlah lembar yang difotokopi
Selain itu terdapat variable dengan nama HPP yang digunakan untuk menyimpan
harga per lembar dan TH untuk menyimpan nilai total harga. Perhatikan,
variable Status bertipe data char, sehingga penulisannya harus menggunakan
tanda “ “.
Flowchart penyelesaian masalah ini dapat dilihat pada Gambar 5.11.

114 Algoritma Pemrograman Dasar


Gambar 5.11. Flowchart penyelesaian untuk masalah fotokopi.

Contoh 5.18. Struktur percabangan bersarang untuk masalah kelulusan siswa.


Aturan kelulusan siswa pada mata pelajaran Pemrograman Web diterapkan sebagai
berikut :
• Jika nilai ujian tengah semester (UTS) lebih besar dari 70 maka siswa
dinyatakan lulus dan Nilai Akhir sama dengan nilai UTS.
• Jika nilai UTS kurang atau sama dengan 70 maka siswa dinyatakan lulus jika
Nilai Akhir lebih besar atau sama dengan 60 dimana Nilai Akhir = (nilai UTS x
40%) + (nilai UAS x 60%).
Buatlah flowchart penyelesaian masalah tersebut apabila output yang diinginkan
adalah NIM, Nama Siswa, Nilai Akhir dan Status Kelulusan.

Rekayasa Perangkat Lunak 115


Penyelesaian:
Pada contoh ini, ada dua percabangan. Yang pertama adalah pemeriksaan
apakah nilai UTS siswa lebih dari 70. Kedua, apabila nilai UTS tidak lebih dari 70,
maka dilakukan pemeriksaan apakah nilai akhir lebih dari 60.
Input yang dibutuhkan untuk permasalahan ini adalah NIM, nama siswa, nilai
UTS, dan nilai UAS. Sehingga variable input yang digunakan adalah: NIM untuk
Nomor induk siswa, nama untuk nama siswa, NUTS untuk nilai ujian tengah
semester, dan NUAS untuk nilai ujian akhir semester. Sedangkan variabel ouput
terdiri dari NA yang digunakan untuk menyimpan nilai akhir dan Status untuk
menyimpan status kelulusan.

Gambar 5.12. Flowchart penyelesaian untuk kelulusan siswa.

116 Algoritma Pemrograman Dasar


5.2.5. Struktur Algoritma
Pengulangan
Dalam banyak kasus
seringkali kita dihadapkan pada
sejumlah pekerjaan yang harus
diulang berkali. Salah satu
contoh yang gampang kita jumpai
adalah balapan mobil seperti
tampak pada gambar 5.13.
Mobil-mobil peserta harus
mengelilingi lintasan sirkuit Gambar 5.13. Lomba balap mobil di sirkuit.
berkali-kali sesuai yang
ditetapkan dalam aturan lomba.
Siapa yang mencapai garis akhir
paling cepat, dialah yang menang.
Pada pembuatan program komputer, kita juga kadang-kadang harus
mengulang satu atau sekelompok perintah berkali-kali agar memperoleh hasil yang
diinginkan. Dengan menggunakan komputer, eksekusi pengulangan mudah
dilakukan. Hal ini karena salah satu kelebihan komputer dibandingkan dengan
manusia adalah kemampuannya untuk mengerjakan tugas atau suatu instruksi
berulangkali tanpa merasa lelah, bosan, atau malas. Bandingkan dengan pengendara
mobil balap, suatu ketika pasti dia merasa lelah dan bosan untuk berputar-putar
mengendarai mobil balapnya.
Struktur pengulangan terdiri dari dua bagian :
1. Kondisi pengulangan, yaitu syarat yang harus dipenuhi untuk melaksanakan
pengulangan. Syarat ini biasanya dinyatakan dalam ekspresi Boolean yang harus
diuji apakah bernilai benar (true) atau salah (false)
2. Badan pengulangan (loop body), yaitu satu atau lebih instruksi yang akan
diulang
Pada struktur pengulangan, biasanya juga disertai bagian inisialisasi dan bagian
terminasi. Inisialisasi adalah instruksi yang dilakukan sebelum pengulangan
dilakukan pertama kali. Bagian insialisasi umumnya digunakan untuk memberi nilai
awal sebuah variable. Sedangkan terminasi adalah instruksi yang dilakukan setelah
pengulangan selesai dilaksanakan.
Ada beberapa bentuk pengulangan yang dapat digunakan, masing-masing
dengan syarat dan karakteristik tersendiri. Beberapa bentuk dapat dipakai untuk
kasus yang sama, namun ada bentuk yang hanya cocok untuk kasus tertentu saja.
Pemilihan bentuk pengulangan untuk masalah tertentu dapat mempengaruhi
kebenaran algoritma. Pemilihan bentuk pengulangan yang tepat bergantung pada
masalah yang akan diprogram.

Rekayasa Perangkat Lunak 117


• Struktur pengulangan dengan For
Pengulangan dengan menggunakan For, merupakan salah teknik pengulangan
yang paling tua dalam bahasa pemrograman. Hampir semua bahasa pemrograman
menyediakan metode ini, meskipun sintaksnya mungkin berbeda. Pada struktur For
kita harus tahu terlebih dahulu seberapa banyak badan loop akan diulang. Struktur
ini menggunakan sebuah variable yang biasa disebut sebagai loop’s counter, yang
nilainya akan naik atau turun selama proses pengulangan. Flowchart umum untuk
struktur For tampak pada Gambar 5.14. Perhatikan penggunaan simbol preparation
pada flowchart tersebut.

Gambar 5.14. Struktur algoritma pengulangan dengan For.

Dalam mengeksekusi sebuah pengulangan dengan For, urutan langkah-


langkah adalah sebagai berikut :
1. Menetapkan nilai counter sama dengan awal.
2. Memeriksa apakah nilai counter lebih besar daripada nilai akhir. Jika benar
maka keluar dari proses pengulangan. Apabila kenaikan bernilai negatif, maka
proses akan memeriksa apakah nilai counter lebih kecil daripada nilai akhir.
Jika benar maka keluar dari proses pengulangan.
3. Mengeksekusi pernyataan yang ada di badan loop
4. Menaikkan/menurunkan nilai counter sesuai dengan jumlah yang ditentukan
pada argument increment. Apabila argument increment tidak ditetapkan maka
secara default nilai counter akan dinaikkan 1.
5. Ulang kembali mulai langkah no 2.

118 Algoritma Pemrograman Dasar


Satu hal yang penting yang harus kita perhatikan adalah nilai counter selalu
ditetapkan diawal dari pengulangan. Apabila kita mencoba merubah nilai akhir pada
badan loop, maka tidak akan berdampak pada berapa banyak pengulangan akan
dilakukan.
Contoh 5.19. Algoritma untuk mencetak pernyataan sebanyak 100 kali
Mungkin kalian pernah ketika masih di sekolah dasar melakukan perbuatan nakal
yang membuat kalian disuruh menuliskan pernyataan tertentu sebanyak 100 kali
sebagai hukuman atas kenakalan tersebut. Misalkan pernyataan yang harus ditulis
adalah “Saya tidak akan mengulangi perbuatan itu lagi”. Bagaimanakah caranya
algoritma untuk kasus ini?
Penyelesaian:
Pada contoh ini, kita memerlukan variabel counter, misalkan kita beri nama I.
Nilai awalnya adalah 1 dan nilai akhirnya adalah 100. Sedangkan increment
atau kenaikan tiap kali pengulangan dari I adalah satu. Perintah untuk
mencetak pernyataan akan diulang satu persatu sampai nilai akhir dari counter
terpenuhi (100). Flowchart penyelesaian untuk contoh ini dapat dilihat pada
Gambar 5.15.

Gambar 5.15. Flowchart menulis pernyataan 100 kali.

Perhatikan bagaimana mudahnya kita melakukan pengulangan. Pada Gambar


5.15 tersebut increment tidak dicantumkan, karena sesuai langkah-langkah
yang dijelaskan sebelumnya, jika tidak dicantumkan maka otomatis nilai
increment adalah satu.

Rekayasa Perangkat Lunak 119


Contoh 5.20. Flowchart untuk mencetak anggota suatu himpunan.
Diketahui sebuah himpunan A yang beranggotakan bilangan 1, 3, 5, .., 19. Buatlah
flowchart untuk mencetak anggota himpunan tersebut.
Penyelesaian:
Pada contoh ini, kita memerlukan variabel counter, misalkan kita beri nama A
(sesuai dengan nama himpunan). Nilai awalnya adalah 1 dan nilai akhirnya
adalah 19. Dari pola himpunan kita tahu bahwa kenaikan bilangan adalah 2 (1
ke 3, 3 ke 5, dan seterusnya). Sehingga bisa kita nyatakan increment atau
kenaikan tiap kali pengulangan dari A adalah 2. Flowchart penyelesaian untuk
contoh ini dapat dilihat pada Gambar 5.16.

Gambar 5.16. Flowchart mencetak anggota himpunan.

Pada Gambar 5.16 tersebut, perhatikan pada simbol preparation. Terdapat


tambahan pernyataan step 2. Inilah yang disebut sebagai increment. Setiap
kali pengulangan, maka nilai counter yaitu A akan bertambah 2 sehingga yang
akan tercetak adalah 1, 3, 5, .., 19.
Contoh 5.21. Menentukan hasil dari suatu flowchart pengulangan.
Perhatikan flowchart pada Gambar 5.17. Tentukan hasil dari flowchart tersebut.
Penyelesaian:
Pada contoh ini, kita mencoba menentukan hasil dari sebuah flowchart.
Bagaimana menurut kalian jawabannya? Marilah kita uraikan jalannya fowchart
tersebut.
Pada flowchart, setelah Start, kita meletakkan satu proses yang berisi
pernyataan A = 1. Bagian inilah yang disebut inisialisasi. Kita memberi nilai
awal untuk A = 1. Variabel counter-nya adalah X dengan nilai awal 1 dan nilai

120 Algoritma Pemrograman Dasar


akhir 10, tanpa increment (atau secara default increment-nya adalah 1). Ketika
masuk ke badan loop untuk pertama kali maka akan dicetak langsung nilai
variabel A. Nilai variabel A masih sama dengan 1. Kemudian proses berikutnya
adalah pernyataan A = A + 2. Pernyataan ini mungkin agak aneh, tapi ini
adalah sesuatu yang pemrograman. Arti dari pernyataan ini adalah gantilah
nilai A yang lama dengan hasil penjumlah nilai A lama ditambah 2. Sehingga A
akan bernilai 3. Kemudian dilakukan pengulangan yang ke-dua. Pada kondisi
ini nilai A adalah 3, sehingga yang tercetak oleh perintah print adalah 3. Baru
kemudian nilai A kita ganti dengan penjumlahan A + 2. Nilai A baru adalah 5.
Demikian seterusnya. Sehingga output dari flowchart ini adalah 1, 3, 5, 7, ..,
19.
Kita dapat melihat sekarang bahwa
Gambar 5.16 dan 5.17 memberikan
output yang sama. Dari kedua
flowchart tersebut, Gambar 5.17
merupakan flowchart yang
disarankan. Meskipun lebih
panjang tetapi lebih terstruktur.
Selain itu tidak semua bahasa
pemrograman memberi fasilitas
pengaturan increment.
Flowchart pada Gambar 5.17 harus
kita perhatikan benar-benar,
terutama posisi pernyataan Print A.
Cobalah membalik posisinya
sehingga letak pernyataan A = A +
2 berada di atas pernyataan Print
A. Bagaimanakah hasilnya?
Seperti halnya struktur
percabangan, kita juga akan
menjumpai bentuk struktur
pengulangan bersarang (nested).
Artinya, ada suatu pengulangan
yang berada di dalam pengulangan
Gambar 5.17. Flowchart mencetak yang lain. Perhatikan Contoh 5.22
bilangan tertentu. berikut ini.

Contoh 5.21. Menentukan hasil dari suatu flowchart pengulangan.


Perhatikan flowchart pada Gambar 5.18. Tentukan hasil dari flowchart tersebut.
Penyelesaian:
Pada contoh ini, kita mencoba menentukan hasil dari sebuah flowchart dengan
pengulangan bersarang. Bagaimana menurut kalian jawabannya? Marilah kita
uraikan jalannya flowchart tersebut.
Rekayasa Perangkat Lunak 121
Pada Gambar 5.18 tersebut, terlihat ada dua simbol preparation. Yang pertama
dengan variabel counter X dan yang kedua dengan variabel counter Y. Dalam
posisi, variabel counter Y terletak setelah variabel counter X. Hal ini berarti
pengulangan dengan variabel counter Y terletak di dalam variabel counter X.
Inilah yang disebut sebagai pengulangan bersarang.

Pada bentuk pengulangan seperti ini, alur


eksekusi program akan berjalan sebagai
berikut:
• Variabel X akan diisi dengan nilai
awal counter-nya yaitu 1.
• Variabel Y akan diisi dengan nilai
awal counter-nya yaitu 0
• Nilai Z dihitung dengan mengalikan
X dengan Y. Nilai X = 1 dan nilai Y
= 0 jadi nilai Z = 0
• Nilai X, Y dan Z dicetak di layar.
• Alur berputar, dan nilai Y dinaikkan
menjadi 1 sedangkan nilai X masih
satu (karena bagian X belum
berputar).
• Nilai Z = 1 hasil perkalian X = 1 dan
Y = 1.
• Nilai X, Y, dan Z akan dicetak lagi di
layar.
• Alur berputar kembali sehingga nilai Gambar 5.18. Flowchart
Y menjadi 2, sehingga nilai Z akan dengan pengulangan
menjadi 2. bersarang.
• Setelah ini perputaran akan keluar
dari Y karena nilai akhir counter yaitu sudah tercapai.
• Nilai X akan dinaikkan 1 menjadi 2, dan proses kembali melakukan
pengulangan pada bagian Y seperti di atas.
• Proses pengulangan diulang terus sampai nilai akhir dari counter X yaitu
3 tercapai. Sehingga hasil akhir dari flowchart tersebut adalah sebagai
berikut:

122 Algoritma Pemrograman Dasar


X Y Z
1 0 0
1 1 1
1 2 2
2 0 0
2 1 2
2 2 4
3 0 0
3 1 3
3 2 6

Dari Contoh 5.21. di atas kita bisa melihat ada aturan-aturan yang harus
dipenuhi dalam pengulangan bersarang, yaitu:
• Masing-masing pengulangan (badan loop) mempunyai variabel counter
sendiri-sendiri.
• Pengulangan-pengulangan tersebut tidak boleh tumpang tindih.

• Struktur pengulangan dengan While


Pada pengulangan dengan For, banyaknya pengulangan diketahui dengan
pasti karena nilai awal (start) dan nilai akhir (end) sudah ditentukan diawal
pengulangan. Bagaimana jika kita tidak tahu pasti harus berapa kali mengulang?
Pengulangan dengan While merupakan jawaban dari permasalahan ini. Seperti
halnya For, struktur pengulangan dengan While juga merupakan struktur yang
didukung oleh hampir semua bahasa pemrograman namun dengan sintaks yang
berbeda.
Struktur While akan mengulang
pernyataan pada badan loop sepanjang
kodisi pada While bernilai benar. Dalam
artian kita tidak perlu tahu pasti berapa
kali diulang. Yang penting sepanjang
kondisi pada While dipenuhi maka
pernyataan pada badan loop akan
diulang. Flowchart umum untuk struktur
While dapat dilihat pada Gambar 5.19.
Pada Gambar 5.19., tampak
bahwa simbol preparasi untuk
pengulangan seperti pada For tidak
digunakan lagi. Namun kita
menggunakan simbol decision untuk
mengendalikan pengulangan. Selain
kondisi, biasanya pada pengulangan
Gambar 5.19. Flowchart umum While. While harus dilakukan inisialisasi variabel
terlebih dahulu.

Rekayasa Perangkat Lunak 123


Contoh 5.22. Pengulangan dengan While untuk mencetak nilai tertentu.
Perhatikan flowchart pada Gambar 5.20. Bagaimanakah output dari flowchart
tersebut?
Penyelesaian:
Perhatikan Gambar 5.20.
bisakah kalian menentukan
hasil dari flowchart
tersebut? Perhatikan
tahapan eksekusi flowchart
berikut ini.
1. Pada flowchart ini ada
dua variabel yang kita
gunakan yaitu A dan B.
Kedua variabel
tersebut kita inisialisasi
nilai awalnya (A = 1
dan B = 0) sebelum
proses loop terjadi.
Variabel A adalah
variabel counter.
2. Pada simbol decision,
nilai A akan diperiksa
apakah memenuhi
kondisi (< 10). Jika Ya
maka perintah
berikutnya dieksekusi,
jika tidak maka
program akan berhenti. Gambar 5.20. Flowchart pengulangan dengan
Pada awal eksekusi ini while untuk mencetak nilai tertentu.
kondisi akan terpenuhi
karena nilai A = 1.
3. Jalankan perintah Print B.
4. Nilai variabel A kemudian diganti dengan nilai A lama (1) ditambah 2.
Sehingga nilai variabel A baru adalah 3. Sedangkan nilai variabel B = 9
(hasil perkalian A = 3).
5. Program akan berputar kembali untuk memeriksa apakah nilai variabel A
masih lebih kecil dari 10. Pada kondisi ini nilai A = 3, sehingga kondisi
masih terpenuhi. Kemudian langkah berulang ke langkah ke 3. Begitu
seterusnya sampai nilai variabel A tidak lagi memenuhi syarat kurang dari
10. Sehingga output dari flowchart ini adalah : 0, 9, 25, 49, 81.

124 Algoritma Pemrograman Dasar


Seperti halnya pengulangan dengan For, pengulangan dengan While juga
memungkinkan terjadinya pengulangan bersarang. Aturan dan cara yang dilakukan
sama dengan pengulangan dengan For.
Pada beberapa bahasa pemrograman juga disediakan pengulangan dengan
cara Do ... Loop dan Repeat .. Until. Kedua cara ini mirip dengan While,
perbedaannya adalah letak dari kondisi. Pada While pemeriksaan kondisi diletakkan
sebelum badan loop. Sedangkan Do ... Loop dan Repeat ... Until, pemeriksaan
kondisi dilakukan setelah badan loop.

5.3. PENGELOLAAN ARRAY


Variabel array telah kita singgung di bagian depan, namun masih sangat
terbatas. Pada bagian ini kita akan pelajari lebih detil tentang array.

5.3.1. Pengertian Array


Variabel-variabel yang kita gunakan selama ini adalah variable biasa yang
memiliki sifat bahwa sebuah nama variable hanya dapat menyatakan sebuah nilai
numeric atau string pada suatu saat. Apabila kita ingin memberi nilai yang baru pada
variable tersebut maka nilai lama akan hilang tergantikan oleh nilai yang baru.
Bagaimana apabila kita ingin menyimpan beberapa nilai/data dalam sebuah variable
dengan nama yang sama, tetapi semua nilai tetap tersimpan? Solusi yang dapat
dilakukan adalah dengan menggunakan indeks pada nama variable tersebut. Cara ini
biasa disebut dengan array.
Array adalah struktur data yang menyimpan sekumpulan elemen yang bertipe
sama, setiap elemen diakses langsung melalui indeksnya. Indeks array haruslah tipe
data yang menyatakan keterurutan, misalnya integer atau string. Array dapat
dianalogikan sebagai sebuah lemari atau locker yang memiliki sederetan kotak
penyimpanan yang diberi nomor berurutan (lihat Gambar 5.21). Untuk menyimpan
atau mengambil sesuatu dari kotak tertentu kita hanya cukup mengetahui nomor
kotaknya saja.

Gambar 5.21. Lemari dengan banyak kotak laci di dalamnya

Pada variabel array, kita tidak hanya menentukan tipe datanya saja, tetapi juga
jumlah elemen dari array tersebut atau dalam hal ini adalah batas atas indeksnya.
Pada banyak bahasa pemrograman seperti C++, Visual Basic, dan beberapa yang
lainnya, nilai indeks awal adalah 0 bukan 1. Cara menuliskan variabel array berbeda-

Rekayasa Perangkat Lunak 125


beda tergantung bahasa pemrograman apa yang dipakai. Tetapi yang pasti tipe data
harus disebutkan dan batas atas indeks harus ditentukan. Untuk mengisi data pada
array kita dapat langsung menentukan pada indeks berapa kita akan isikan demikian
juga untuk memanggil atau menampilkan data dari array.
Contoh deklarasi, pengisian dan pemanggilan array adalah sebagai berikut.
Contoh 5.23. Penulisan array pada C++ dan Visual Basic.
Array pada C++ Array pada Visual Basic
#include <iostream> ‘Mendeklarasikan array A
using namespace std; dengan 3 buah elemen bertipe
integer
int main() {
Dim A (2) as Integer
// Mendeklarasikan array A
dengan 3 buah elemen bertipe ‘Mengisikan nilai elemen array
int A(0) = 5;
int A[3]; A(1) = 10;
A(2) = 20;
// Mengisikan nilai elemen
array ‘Menampilkan nilai elemen
A[0] = 5; array
A[1] = 10; Print A(0);
A[2] = 20; Print A(1);
Print A(2);
// Menampilkan nilai elemen
array
cout<<"Nilai elemen ke-1 =
"<<A[0];
cout<<"Nilai elemen ke-2 =
"<<A[1];
cout<<"Nilai elemen ke-3 =
"<<A[2];

return 0;
}

Perhatikan pada kedua kode di atas. Pada pendeklarasian variabel array nilai
maksimal indeks adalah 2 tetapi jumlah elemennya ada 3 karena indeks dimulai dari 0
bukan dari 1.

5.3.2. Pencarian Data dalam Array


Salah satu permasalahan yang sering dijumpai dalam array adalah bagaimana
mencari elemen tertentu dari array. Misalnya pada kasus loker pada Gambar 5.21 di
atas tersedia 100 kotak. Kemudian kita diminta untuk mencari nomor kotak keberapa
yang dimiliki oleh seorang siswa bernama “Rudi”. Contoh yang lain, misalkan ada

126 Algoritma Pemrograman Dasar


banyak siswa dalam satu sekolah dan kita diminta mencari data seorang siswa dengan
nama tertentu atau alamat tertentu. Perhatikan contoh berikut.
Contoh 5.24. Pencarian pada array.

A[0] = 23
A[1] = 22 Manakah
A[2] = 45 elemen yang
A[3] = 12 berisi 12
A[4] = 10
A[5] = 34

Pada contoh ini kita diminta mencari elemen yang berisi angka 12 dari
sekumpulan elemen dalam array. Ada 6 elemen pada array tersebut. Menurut kalian
bagaimanakah algoritma penyelesaiannya?
Cara yang paling umum dan paling mudah dilakukan adalah dengan cara
pencarian berurutan (linear search). Pada masa lalu cara ini dianggap tidak efisien
karena membutuhkan waktu lama. Namun dengan perkembangan komputer yang
sangat cepat, waktu eksekusi algoritma ini tidak terlalu dipermasalahkan. Cara ini
dilakukan dengan cara membandingkan isi dari elemen dengan apa yang kita cari.
Satu per satu dimulai dari elemen yang paling awal.
Apabila kita terapkan pada Contoh 5.24, maka eksekusi program akan
berlangsung berurutan sebagai berikut:
• Tetapkan bilangan yang ingin kita cari (yaitu 12)
• Ambil elemen paling awal (yaitu A[0]), bandingkan isi elemen tersebut (yaitu
23) dengan bilangan yang kita cari. Jika sama maka stop.
• Jika tidak maka lanjutkan dengan elemen berikutnya (yaitu A[1]), bandingkan
isi elemen tersebut dengan bilangan yang kita cari. Jika sama maka stop.
• Jika tidak maka lanjutkan dengan elemen berikutnya. Dan seterusnya sampai
dijumpai elemen yang berisi sama dengan bilangan yang kita cari.
Contoh 5.24 akan memberikan hasil elemen A[3] yang memiliki isi 12. Apabila
digambarkan dalam bentuk flowchart maka akan tampak seperti pada Gambar 5.22.

Rekayasa Perangkat Lunak 127


Flowchart Keterangan
- I adalah variabel counter
sekaligus indeks
- N adalah batas atas dari indeks
- Bil[I] adalah nama variabel array
yang berisi bilangan
- A adalah bilangan yang kita cari

Gambar 5.22. Flowchart untuk pencarian bilangan.

Pada flowchart di Gambar 5.22, kita menggunakan pengulangan model While.


Kondisi yang harus dipenuhi disini ada dua, yaitu I < N dan Bil[I] <> A. Arti dari
kondisi ini adalah jika nilai indeks I kurang dari batas atas indeks dan isi dari Bil[I]
tidak sama dengan bilangan yang kita cari, maka pencarian akan diteruskan pada
indeks yang lebih tinggi. Selama kondisi ini dipenuhi maka pencarian akan terus
dilakukan. Perhatikan bahwa di sini kita menggunakan “dan” yang artinya kedua
kondisi harus dipenuhi agar dianggap benar. Pencarian akan hanya akan berhenti jika
salah satu kondisi atau kedua kondisi tidak dipenuhi lagi. Sehingga misalnya Bil[I]
mempunyai isi yang sama dengan A maka pencarian akan dihentikan karena kondisi
pada While sudah tidak dipenuhi lagi.

5.3.3. Pengurutan Data pada Array


Permasalahan lain dalam array yang juga banyak digunakan adalah bagaimana
mengurutkan elemen-elemen dari variabel array tersebut. Perhatikan kembali Contoh
5.24. Pada contoh tersebut terlihat bahwa isi elemen-elemen dari array tidak dalam
posisi berurutan. Bagaimanakah caranya agar isi elemen-elemen tersebut terurut dari
besar ke kecil atau sebaliknya?
Ada beberapa algoritma yang dapat digunakan untuk mengurutkan sekumpulan
bilangan, antara lain bubble sort, selection sort, shell sort, quick sort, dan lain-lain.
Pada buku ini kita akan membahas satu algoritma yaitu bubble sort. Meskipun
kinerjanya tidak sebaik algoritma yang lain, algoritma ini mudah dimengerti dan
banyak digunakan. Perhatikan contoh berikut.

128 Algoritma Pemrograman Dasar


Contoh 5.24. Pengurutan dengan bubble sort.
Misalkan sebuah variabel array dengan nama Bil yang terdiri dari 5 elemen yang
masing-masing berisi bilangan "5 1 4 2 8". Urutkan dari mulai nilai terkecil sampai ke
yang paling besar.
Penyelesaian:
Kita akan menggunakan metode bubble sort untuk mengurutkan array ini.
Bubble sort dilakukan dengan cara membandingkan dua bilangan yang berurutan
letaknya. Jika urutan letaknya benar maka dilanjutkan dengan membandingkan
dua bilangan berikutnya. Jika tidak maka tukar letak dari dua bilangan tersebut.
Marilah kita terapkan algoritma ini. Perhatikan tabel array berikut. Kondisi awal
adalah pada posisi J = 0. Pertama kita bandingkan antara Bil[0] dengan Bil[1].
Bil[0] = 5 sedangkan Bil[1] = 1. Berdasarkan aturan bubble sort, isi dari Bil[0]
tidak sesuai letaknya karena lebih besar dari isi Bil[1]. Sehingga kita perlu
menukar isi dari dua elemen array ini. Sehingga Bil[0] = 1 dan Bil[1] = 5
(perhatikan baris pada J = 1). Langkah berikutnya kita membandingkan Bil[1]
dengan Bil[2]. Bil[1] = 5 dan Bil[2] = 4, sehingga kembali kita harus menukar isi
dari elemen ini (perhatikan baris J = 2). Hal ini terus dilakukan sampai pada
perbandingan Bil[3] dengan Bil[4].
J Bil[0] Bil[1] Bil[2] Bil[3] Bil[4]
0 5 1 4 2 8
1 1 5 4 2 8
2 1 4 5 2 8
3 1 4 2 5 8
4 1 4 2 5 8

Pada posisi akhir dari tabel di atas, kita lihat bahwa bilangan belum terurut
sepenuhnya. Karena kita baru menggunakan satu kali putaran dengan Bil[0]
sebagai patokan. Kita akan lakukan perbandingan lagi, namun dengan Bil[1]
sebagai patokan. Hal ini karena Bil[0] pasti sudah berisi bilangan paling kecil.
Sehingga tabel baru kita buat seperti berikut.
J Bil[0] Bil[1] Bil[2] Bil[3] Bil[4]
1 1 4 2 5 8
2 1 2 4 5 8
3 1 2 4 5 8
4 1 2 4 5 8

Pada posisi tabel di atas, sebenarnya urutan bilangan sudah benar, tapi algoritma
belum berhenti karena algoritma belum memeriksa putaran yang berikutnya.
Sehingga diperlukan dua putaran lagi dengan dengan dasar masing-masing
pembanding adalah Bil[2] dan Bil[3]. Kedua tabel tersebut adalah sebagai
berikut.

Rekayasa Perangkat Lunak 129


J Bil[0] Bil[1] Bil[2] Bil[3] Bil[4]
2 1 2 4 5 8
3 1 2 4 5 8
4 1 2 4 5 8

J Bil[0] Bil[1] Bil[2] Bil[3] Bil[4]


3 1 2 4 5 8
4 1 2 4 5 8

Kalau digambarkan dalam bentuk flowchart akan tampak seperti pada Gambar
5.23.

Gambar 5.23. Flowchart untuk pengurutan bilangan.

5.4. OPERASI FILE


File seringkali digunakan untuk menyimpan data agar data tidak hilang. Data
atau yang ada dan dihasilkan pada program akan hilang ketika program diakhiri,
sehingga file digunakan untuk menyimpan data tersebut. Ada dua jenis file yaitu file
program dan file data. File program berisi kode-kode program sedangkan file data
hanya berisi data. File data terdiri dari dua jenis yaitu file data berurutan (sequential
data file) dan file data acak (random-access data file). Perbedaan utama dari kedua
jenis file data ini adalah dapat dilihat pada tabel berikut.
130 Algoritma Pemrograman Dasar
File data berurutan File data acak
- Record atau baris data harus - Record tidak perlu dibaca
dibaca berurutan mulai dari yang berurutan
pertama - Panjang field untuk setiap record
- Panjang field untuk setiap record harus sama
tidak perlu sama - Pengubahan serta penambahan
- Pengubahan serta penambahan record lebih mudah dilakukan
record tertentu sukar dilakukan

5.4.1. Algoritma Penulisan Data pada File


Algoritma yang digunakan untuk penulisan data untuk file data berurutan
maupun acak secara prinsip sama, hanya modusnya yang berbeda. Berikut ini adalah
algoritma penulisan data dalam SE.
Open “modus”, <buffer number>, “nama file data”
Write <record number>, field 1, field 2, .. field n
Close buffer number
Modus O menunjukkan file ini dibuka untuk ditulisi.
Contoh 5.25. Contoh penerapan algoritma penulisan data.
Misalkan kita punya file data dengan nama “siswa.dat” yang field-nya adalah nama
siswa, alamat, nomor telepon. Maka untuk menuliskan data adalah sebagai berikut.
Open “O”, #1, “siswa.dat”
Write #1, <nama>, <alamat>, <no.telepon>
Close #1
Notasi #1 menunjukkan siswa.dat akan ditempatkan dalam buffer no 1. Notasi
ini harus sama digunakan di seluruh progam di atas. Artinya kalau kita menempatkan
suatu file dengan nomor buffer #1 maka ketika membuka, menulis, membaca dan
menutup harus menggunakan notasi tersebut. Demikian juga bila kita menempatkan
pada buffer no #2.
5.4.2. Algoritma Pembacaan Data pada File
Algoritma membaca data algoritmanya hampir sama dengan menuliskan data,
tetapi modus yang digunakan tidak O tetapi I. I adalah input yang berarti file data
dibuka untuk dibaca datanya sebagai input. Berikut ini algoritmanya dalam SE.
Open “modus”, <buffer number>, “nama file data”
While not EOF:
Input <record number>, field 1, field 2, .. field n
Print field 1, field 2, .. field n
End while
Close buffer number
Pernyataan While Not EOF digunakan untuk memeriksa apakah sudah ada pada
baris terakhir dari data. Jika belum maka baris-baris data akan dibaca dan dicetak
sampai baris terakhir. Pernyataan input digunakan untuk mengambil data dari file

Rekayasa Perangkat Lunak 131


untuk dimuat ke dalam program. Sedangkan pernyataan print digunakan untuk
mencetak data ke layar komputer.
Contoh 5.26. Contoh penerapan algoritma penulisan data.
File data dengan nama “siswa.dat” seperti pada contoh 5.25 yang field-nya adalah
nama siswa, alamat, nomor telepon. Maka untuk membaca data adalah sebagai
berikut.
Open “I”, #2, “siswa.dat”
While not EOF:
Input #2, <nama>, <alamat>, <no.telepon>
Print <nama>, <alamat>, <no.telepon>
End while
Close buffer number

5.5. Ringkasan
• Variabel adalah tempat dimana kita dapat mengisi atau mengosongkan
nilainya dan memanggil kembali apabila dibutuhkan. Setiap variabel
akan mempunyai nama (identifier) dan nilai.
• Konstanta adalah variabel yang nilai datanya bersifat tetap dan tidak bisa
diubah.
• Tipe data adalah jenis data yang dapat diolah oleh komputer untuk
memenuhi kebutuhan dalam pemrograman komputer.
• Tipe data dapat dikelompokkan menjadi tipe data primitive dan tipe data
composite. Tipe data primitive terdiri dari numeric, character, dan
bolean. Sedangkan tipe data composite terdiri dari array, record/struct,
image, date time, subrange, enumerasi, obyek dan variant.
• Algoritma adalah urutan langkah-langkah logis penyelesaian masalah
yang disusun secara sistematis. Algoritma harus benar dan harus
berhenti. Setelah berhenti, algoritma memberikan hasil yang benar.
• Algoritma dapat ditulis dengan cara Structured English, Pseudocode dan
Flowchart.
• Struktur berurutan terdiri satu atau lebih instruksi. Tiap instruksi
dikerjakan secara berurutan sesuai dengan urutan penulisannya.
• Pada struktur percabangan, program akan berpindah urutan pelaksanaan
jika suatu kondisi yang disyaratkan dipenuhi.
• Struktur pengulangan terdiri dari dari kondisi pengulangan dan badan
pengulangan dan dapat dilakukan dengan For dan While.
• Array adalah struktur data yang menyimpan sekumpulan elemen yang
bertipe sama, setiap elemen diakses langsung melalui indeksnya.

132 Algoritma Pemrograman Dasar


Operasi pencarian pada array dapat dilakukan dengan cara linear search
sedangkan pengurutan dengan metode bubble sort.
• File data ada yang bersifat urut dan ada yang acak. Metode pembacaan
dan penulisan dibedakan dari modusnya.

5.6. Soal-Soal Latihan


1. Tentukan salah atau benar pada nama-nama variabel berikut ini. Jika salah
cobalah berikan alasan.
a. nama.guru
b. NamaGuru
c. 2x
d. harga/buku
e. hargaPerBuku
2. Tentukan tipe data yang cocok untuk hal-hal berikut ini (perhatikan ini bukan
nama variabel) dan jelaskan alasannya.
a. Jumlah murid
b. Berat badan
c. Tinggi badan
d. Nama siswa
e. Tempat lahir
f. Tanggal lahir
3. Lihat kembali Contoh 5.3.
a. Jika pada kode program A semua variabel (x, y, z) dideklarasikan
bertipe data int, berapakah nilai z?
b. Jika pada kode program A semua variabel (x, y, z) dideklarasikan
bertipe data float, berapakah nilai z?
c. Jika pada kode program B variabel x juga dideklarasikan bertipe data
float, berapakah nilai z?
4. Ada dua gelas A dan B, gelas A berisi larutan berwarna merah, gelas B berisi
larutan berwarna kuning. Pertukarkan isi dari kedua gelas itu sedemikian
rupa sehingga gelas A berisi larutan kuning dan gelas B berisi larutan merah.
Buatlah algoritma penyelesaiannya dengan menggunakan SI (Structured
Indonesia).
5. Variabel A = 6, Variabel B = 10. Buatlah flowchart untuk menukar nilai
variabel A dan B sehingga variabel A = 10 dan variabel B = 6.
6. PT. Sandang Nyaman bermaksud menggunakan komputer untuk menghitung
upah mingguan pegawainya. Data yang diperlukan adalah nama pegawai dan
jumlah jam kerja selama seminggu. Upah per jam ditetapkan Rp. 4500,-.
Buatlah flowchart untuk masalah ini jika output yang diinginkan adalah nama
pegawai, jam kerja dan upah yang diterima.

Rekayasa Perangkat Lunak 133


7. Sama seperti soal no 3, tetapi jika jam kerja melebihi 25 jam per minggu
maka kelebihannya dianggap lembur. Upah perjam lembur adalah satu
setengah kali dari upah per jam pada kondisi biasa. Bagaimanakah
flowchartnya?
8. Seorang penjual buku pelajaran SD sedang berusaha menarik pembeli buku
dengan ketentuan-ketentuan sebagai berikut :
• Jika jumlah buku yang dibeli lebih kecil atau sama dengan 100
eksemplar, maka pembeli tidak mendapat potongan,
• Jika jumlah buku yang dibeli lebih besar dari 100 tetapi kurang atau
sama dengan 200 eksemplar, maka untuk 100 eksemplar yang
pertama mendapat diskon 5%, sedangkan sisanya mendapat diskon
15%,
• Jika jumlah buku yang dibeli lebih besar dari 200 eksemplar, maka
untuk 100 eksemplar yang pertama didiskon 7%, untuk 100
eksemplar yang kedua didiskon 17% dan sisanya didiskon 27%.
Apabila harga satu eksemplar buku Rp. 5000, buatlah flowchart untuk
menyelesaikan aturan tersebut apabila output yang diinginkan adalah
Jumlah eksemplar buku yang dibeli dan total harga yang harus dibayar.
(Tentukan terlebih dahulu, semua variable, konstanta dan tipe data
masing-masing).
9. Lihat kembali Contoh 5.16. Buatlah flowchart untuk menghasilkan output
yang sama seperti Contoh 5.16, namun dengan menggunakan pengulangan
While.
10. Diketahui 2 buah himpunan, A = {1, 3, 5, ..., 19) dan B = {2, 5, 8, ..., 29}.
Buatlah flowchart untuk mencari irisan dari himpunan A dan B. (Petunjuk:
irisan himpunan terjadi jika nilai anggota himpunan A = nilai anggota
himpunan B).
11. Buatlah flowchart untuk mencetak tabel perkalian seperti berikut:
1 x 1 = 1 2 x 1 = 2 3 x 1 = 3 4 x 1 = 4
1 x 2 = 2 2 x 2 = 4 3 x 2 = 6 4 x 2 = 8
1 x 3 = 3 2 x 3 = 6 3 x 3 = 9 4 x 3 = 12
1 x 4 = 4 2 x 4 = 8 3 x 4 = 12 4 x 4 = 16
1 x 5 = 5 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20

12. Urutkan bilangan berikut ini dengan algoritma bubble sort:


a. 5 - 3 - 12 – 2 - 52
b. 4 - 33 – 4 – 3 -12 -2
c. 5 - 3 - 12 - 2 – 50 – 52 – 10

134 Algoritma Pemrograman Dasar


Gambar 6.1. di samping
ini saya yakin kalian pernah
melihatnya. Ya, inilah notasi
umum dari salah satu teori
matematika, yaitu matrik.
Operasi matrik, merupakan
operasi yang banyak
digunakan dalam banyak
aktifitas yang membutuhkan
perhitungan dengan model
banyak bilangan. Cobalah
buka kembali buku matematika
kalian yang membahas matrik
kalian akan melihat banyak Gambar 6.1. Notasi matrik.
sekali yang bisa kita lakukan
dengan matrik.
Pernahkan kalian mendengar perangkat lunak bernama MATLAB? Perangkat
lunak yang didasarkan pada operasi matrik ini sangat populer dikalangan ilmuan,
insinyur dan orang-orang yang banyak berkecimpung dengan perhitungan. Dengan
menggunakan array kalian juga bisa membuat program yang dapat melakukan
operasi matrik seperti halnya MATLAB.
Standar kompetensi algoritma pemrograman lanjutan terdiri atas empat
kompetensi dasar yaitu, menggunakan array multidimensi dan menggunakan
prosedur dan fungsi. Dalam penyajian pada buku ini, setiap kompetensi dasar
memuat uraian materi, dan latihan. Ringkasan diletakkan pada setiap akhir bab.
Sebelum mempelajari kompetensi ini ingatlah kembali prinsip pemecahan masalah,
algoritma pemrograman dasar dan materi-materi pendukung dari mata pelajaran
matematika.
Pada akhir bab, tercantum soal-soal latihan yang disusun dari soal-soal yang
mudah hingga soal-soal yang sulit. Latihan soal ini digunakan untuk mengukur
kemampuan terhadap kompetensi dasar ini. Artinya setelah mempelajari kompetensi
dasar ini secara mandiri dengan bimbingan guru sebagai fasilitator, ukurlah sendiri
kemampuan dengan mengerjakan soal-soal latihan tersebut.

Rekayasa Perangkat Lunak 135


TUJUAN
Setelah mempelajari bab ini diharapkan kalian akan mampu :
o Menggunakan array multidimensi
o Menggunakan prosedur dan fungsi

6.1. ARRAY MULTIDIMENSI

6.1.1. Pengertian Array Multidimensi


Array satu dimensi seperti pada Bab 5 sangat baik untuk menyimpan data
sejenis yang berurutan, namun bagaimana bila kita ingin menyimpan daftar kota
dengan temperature rata-ratanya secara bersama-sama, atau menyimpan data nama
Siswa dengan nilai ujiannya? Pada kasus seperti ini kita dapat menggunakan dua
array satu dimensi, satu array untuk menyimpan nama dan satu array untuk
menyimpan nilai. Namun ini bukanlah pilihan yang baik karena akan menyulitkan dan
membuat kode program menjadi tidak efisien. Pilihan yang lebih baik adalah dengan
menggunakan pendekatan Array Multidimensi. Kita dapat menyimpan dengan
menggunakan array dua dimensi untuk kasus di atas. Perhatikan gambar berikut ini
untuk melihat perbedaan dua array satu dimensi dengan array dua dimensi.

Nama(4) Nilai(4) NilaiSiswa (4,1)


Joni 70 0 Joni 70
Rudi 80 1 Rudi 80
Sari 45 2 Sari 45
Dono 56 3 Dono 56
Indro 77 4 Indro 77
Dua array satu dimensi Array dua dimensi

Gambar 6.2. Perbedaan array satu dimensi dan dua dimensi

Array dua dimensi mempunyai dua indeks. Indeks yang pertama menunjukkan
baris sedangkan indeks yang kedua adalah kolom. Pada Gambar 6.2, variable array
NilaiSiswa memiliki dua indeks yaitu indeks pertama 4 yang menyatakan nilai indeks
maksimal untuk baris adalah 4 (atau ada 5 baris karena indeks baris pertama bernilai
0), sedangkan indeks kedua adalah 1 yang menunjukkan nilai indeks maksimal untuk
kolom adalah 1 (atau ada 2 kolom karena indeks kolom pertama bernilai 0). Untuk
mendeklarasikan array dua dimensi dapat digunakan cara sebagai berikut :
Dim NilaiSiswa(4,1)
Sedangkan untuk mengakses nilai pada array dua dimensi dapat digunakan
sepeti contoh berikut.

136 Algoritma Pemrograman Lanjutan


Contoh 6.1. Membaca nilai array multidimensi
Print NilaiSiswa(3,0)
Print NilaiSiswa(3,1)
Pernyataan pertama dari contoh 6.1, akan menghasilkan output “Dono” (Baris
ke 4 dan kolom pertama) sedangkan pernyataan kedua menghasilkan output 56
(Baris ke 4 kolom kedua).
Keuntungan menggunakan array multidimensi adalah secara konseptual, array
ini lebih mudah dikelola. Sebagai contoh kita ingin membuat program permainan dan
kita ingin mencari posisi dari suatu tempat pada sebuah papan permainan. Setiap
bujursangkar dapat diidentifikasi dengan menggunakan dua angka, yaitu koordinat
horizontal dan vertikalnya (atau baris dan kolomnya). Struktur seperti ini adalah
tipikal penggunaan array dua dimensi. Koordinat horizontal adalah indeks barisnya
sedangkan koordinat vertical adalah indeks kolomnya. Bentuk array multidimensi ini
dapat dikembangkan menjadi lebih dari dua dimensi. Pernyataan Dim
Matrix(9,9,9) akan membuat array multidimensi yang memiliki 1000 elemen
(10x10x10).

6.1.2. Operasi Matriks dengan Array Multidimensi


Seperti disinggung di awal bab ini, kita bisa menggunakan array untuk
melakukan operasi matrik. Perhatikan Gambar 6.3 berikut ini.
Gambar 6.3 ini menunjukkan matrik dua
dimensi yang terdiri dari 4 baris dan 3 kolom. Atau
biasa dinotasikan sebagai A4x3. Hal ini identik dengan
array multidimensi dengan yang kita definisikan
sebagai A(3, 2). Perhatikan kembali angka pada
indeks array selalu lebih kecil satu dari jumlah
sesungguhnya karena indeks selalu dimulai dengan 0.
Gambar 6.3. Matrik 4 x 3. Sedangkan indeks pada matrik dimulai pada angka 1.
Untuk membuat array atau matrik seperti pada
Gambar 6.3, maka kita memerlukan struktur pengulangan. Bentuk for dapat kita
gunakan karena kita telah tahu dengan pasti berapa baris dan berapa kolomnya.
Gambar berikut menyajikan flowchart untuk membuat matrik pada Gambar 6.3.
Pada Gambar 6.4. kita melihat dua buah variabel counter yaitu I dan J. I
digunakan untuk membuat indeks pada baris yaitu 4 baris (1 to 4), sedangkan J
digunakan untuk membuat indeks pada kolom yaitu 3 kolom (1 to 3). Pembacaan
data akan berlangsung sebagai berikut:
A(1,1) = ....
A(1,2) = ....
A(1,3) = ....
A(2,1) = ....
A(2,2) = ....
A(2,3) = .... dan seterusnya.

Rekayasa Perangkat Lunak 137


Gambar 6.4. Algoritma untuk membuat matrik 4 x 3.

Contoh 6.2. Operasi penjumlahan pada matrik.


Perhatikan matrik berikut ini:

Operasi matriks di atas adalah operasi penjumlahan dua buah matrik dengan dimensi
yang sama yaitu 3x3. Bagaimanakah algoritma penyelesaiannya?
Penyelesaian:
Pada contoh soal di atas ada dua buah matriks misalkan A matriks pertama dan B
adalah matriks kedua. Selain itu juga dibutuhkan matrik ke tiga yaitu C sebagai
hasil penjumlahan matriks A dan B. Gambar 6.5. menunjukkan algoritma
penjumlahan dua buah matriks.

138 Algoritma Pemrograman Lanjutan


Gambar 6.5. Algoritma penjumlahan dua buah matrik

Rekayasa Perangkat Lunak 139


6.2. PROSEDUR DAN FUNGSI
Setiap bahasa pemrograman selalu menyediakan fungsi-fungsi yang sudah
didefinisikan oleh bahasa pemrograman tersebut (built-in function). Namun ada
kalanya kita memerlukan suatu prosedur tertentu yang kita gunakan berulang kali dan
tidak tersedia dalam built-in function.
Prosedur adalah sekumpulan perintah yang merupakan bagian dari program
yang lebih besar yang berfungsi mengerjakan suatu tugas tertentu. Prosedur atau
kadang disebut subrutin / subprogram biasanya relative independent terhadap bagian
kode program yang lain. Atau sebenarnya prosedur dapat berdiri sendiri.
Keuntungan menggunakan prosedur adalah :
o mengurangi duplikasi kode program.
o memberikan kemungkinan penggunaan kembali kode untuk program yang lain.
o memecah masalah yang rumit dalam masalah-masalah yang lebih kecil dan lebih
mudah diselesaikan (lihat prinsip problem reduction pada Bab 2).
o membuat kode program lebih mudah dibaca.
o dapat digunakan untuk menyembunyikan detil program.
Pada flowchart untuk menuliskan prosedur digunakan notasi Predefined
Process (lihat Bab 5 untuk notasi flowchart). Secara skematis penggunaan prosedur
dapat dilihat pada Gambar 6.6.

Gambar 6.6. Skema penggunaan prosedur.

Gambar 6.6. menunjukkan ada proses utama yang terjadi dan ada prosedur
yang sebenarnya merupakan bagian dari proses utama ini. Ketika proses utama
membutuhkan suatu tugas tertentu maka proses utama akan memanggil prosedur
tertentu menyelesaikan tugas tersebut. Perhatikan contoh berikut:

140 Algoritma Pemrograman Lanjutan


Contoh 6.3. Prosedur
Buatlah algoritma menghitung luas segitiga, segiempat, dan lingkaran.
Penyelesaian:
Untuk membuat algoritma ini kita dapat memandang proses perhitungan luas
segitiga, luas segiempat dan luas lingkaran sebagai bagian program yang
berdiri sendiri. Kita dapat membuat prosedur untuk masing-masing proses.
Dan kita akan memanggil prosedur tersebut dari proses utama (Gambar 6.7).

Gambar 6.7. Penyelesaian contoh 6.3.

Urutan proses pada Gambar 6.7 adalah sebagai berikut.


o Pembacaan data
o Pada proses utama akan terjadi pengecekan pada data yang dibaca,

Rekayasa Perangkat Lunak 141


o Apabila data yang dibaca adalah untuk segitiga, maka proses utama
akan memanggil prosedur hitung luas segitiga dengan membawa nilai
variable yang diperlukan oleh prosedur luas hitung segitga.
o Proses perhitungan luas segitiga hanya dilakukan pada prosedur
tersebut.
o Setelah proses perhitungan maka hasil perhitungan akan dibawa
kembali ke proses utama untuk dicetak hasilnya.
Urutan proses yang sama juga terjadi jika data yang dibaca adalah untuk
segiempat atau lingkaran.
Prosedur yang baik memiliki ciri-ciri sebagai berikut :
o Hanya memiliki satu fungsi tujuan (logical inherent).
Sebuah prosedur sebaiknya hanya memiliki satu fungsi tujuan dan tidak
bercampur dengan tujuan-tujuan lain. Hal ini untuk membuat prosedur lebih
focus sehingga tujuan akan dapat tercapai dengan baik.
o Tidak tergantung pada prosedur lain (independent).
Sebuah prosedur harusnya bersifat mandiri, artinya prosedur ini dapat berjalan
dan diuji tanpa menunggu bagian lainnya selesai. Selain itu variable-variabel
yang digunakan dalam prosedur tersebut tidak mempengaruhi variable-variabel
yang digunakan pada bagian lain di keseluruhan program.
o Berukuran kecil (small size).
Yang dimaksud ukuran disini adalah panjang algoritma atau panjang kode
program pada suatu prosedur. Ukuran kecil akan mudah dibaca dan diperbaiki.
Apabila sebuah modul sudah terlalu besar maka sebaiknya dipertimbangkan
untuk dipecah-pecah menjadi beberapa modul yang lebih kecil.

6.3. Ringkasan
• Array dua dimensi mempunyai dua indeks. Indeks yang pertama
menunjukkan baris sedangkan indeks yang kedua adalah kolom.
• Pembacaan data dan penulisan data pada array multidimensi dilakukan
dengan langsung menunjuk pada nomor indeksnya
• Prosedur adalah sekumpulan perintah yang merupakan bagian dari
program yang lebih besar yang berfungsi mengerjakan suatu tugas
tertentu.

142 Algoritma Pemrograman Lanjutan


6.4. Soal-Soal Latihan
1. Perhatikan contoh 6.1 di atas. Buatlah algoritma untuk operasi pengurangan
dua buah matriks.
2. Buatlah juga algoritma untuk operasi perkalian dua buah matriks.
3. Dengan menggunakan prosedur buatlah sebuah algoritma yang membaca
data matrik kemudian memilih melakukan operasi penjumlahan, pengurangan
dan perkalian dua buah matrik.

Rekayasa Perangkat Lunak 143


4.

144 Algoritma Pemrograman Lanjutan


Gambar 7.1. Aplikasi yang dibangun dengan Visual Basic.

Perhatikan Gambar 7.1. di atas. Tampilan pada gambar tersebut menunjukkan


sebuah aplikasi yang menampilkan sekumpulan data pada tabel. Suatu ketika kalian
akan menjumpai aplikasi yang serupa. Aplikasi di atas dapat dibangun dengan
menggunakan Visual Basic secara cepat, tanpa harus dipusingkan dengan masalah
pembuatan tabel, menu, tombol atau yang lainnya. Tinggal klik, seret, letakkan, atur
posisi kemudian buat kodenya, aplikasi sudah langsung bisa dijalankan.
Standar kompetensi pemrograman dengan VB dan VB.Net dasar terdiri atas tiga
kompetensi dasar. Dalam penyajian pada buku ini, setiap kompetensi dasar memuat
uraian materi, dan latihan. Ringkasan diletakkan pada setiap akhir bab kemudian
dilanjutkan dengan soal-soal latihan. Kompetensi dasar pada bab ini adalah
menjelaskan dasar-dasar Visual Basic, mengakses dan memanipulasi data dengan
Visual Basic, dan menerapkan teknologi COM. Sebelum mempelajari kompetensi ini
ingatlah kembali sistem operasi, prinsip pemecahan masalah, algoritma pemrograman
dasar dan lanjutan dan materi-materi pendukung dari mata pelajaran matematika.

Rekayasa Perangkat Lunak 145


TUJUAN
Setelah mempelajari bab ini diharapkan pembaca akan mampu :
o Menjelaskan dasar-dasar Visual Basic
o Mengakses dan memanipulasi data dengan Visual Basic
o Menerapkan teknologi COM

7.1. Dasar-dasar Visual Basic


Visual Basic (VB) adalah salah satu bahasa pemrograman komputer. Bahasa
pemrograman VB, yang dikembangkan oleh Microsoft sejak tahun 1991, merupakan
pengembangan dari pendahulunya yaitu bahasa pemrograman BASIC (Beginner’s All-
purpose Symbolic Instruction Code) yang dikembangkan pada era 1950-an. VB
adalah salah suatu developement tools untuk membangun aplikasi dalam lingkungan
Windows. Dalam pengembangan aplikasi, Visual Basic menggunakan pendekatan
Visual untuk merancang user interface dalam bentuk form, sedangkan untuk
codingnya menggunakan dialek bahasa Basic yang cenderung mudah dipelajari. Visual
Basic telah menjadi tools yang terkenal bagi para pemula maupun para developer.
Namun ada kelemahan dari VB yaitu pada kinerja yang relative terasa lebih lambat
dibanding dengan bahasa pemrograman lain. Namun dengan perkembangan
processor dan main memory yang semakin cepat permasalahan ini menjadi tidak
begitu penting.
Visual Basic adalah perangkat lunak yang berjalan di atas platform sistem
operasi Microsoft Windows. Untuk memulai Visual Basic dapat dilakukan dengan
mengklik Start -> Programs -> Microsoft Visual Studio 6 -> Microsoft Visual
Basic. Tampilan awal Visual Basic akan tampak seperti Gambar 7.2.

Gambar 7.2. Tampilan awal Visual Basic.

146 Pemrograman Aplikasi dengan VB dan VB.Net


Pada Gambar 7.2 kita diminta untuk memilih jenis proyek yang akan kita buat.
Untuk tahap awal proyek Standar.EXE merupakan pilihan yang biasa dilakukan.
Setelah kita memilih Standar.EXE maka kita akan dibawa pada tampilan berikut.

Gambar 7.3. Tampilan awal untuk pilihan Standard.EXE.

Sebelum kita bekerja dengan Visual Basic, maka ada baiknya kita mengenali
lebih dulur lingkungan kerja (IDE) Visual Basic. IDE (Integrated Developement
Environment) Visual Basic merupakan Lingkungan Pengembangan Terpadu bagi
programmer dalam mengembangkan aplikasinya. Dengan menggunakan IDE
programmer dapat membuat user interface, melakukan coding, melakukan testing
dan debuging serta menkompilasi program menjadi executable. Penguasaan yang
baik akan IDE akan sangat membantu programmer dalam mengefektifkan tugas-
tugasnya sehingga dapat bekerja dengan efisien. Tampilan IDE VB dapat dilihat pada
Gambar 7.4.

Rekayasa Perangkat Lunak 147


Gambar 7.4. IDE Visual Basic

• Menu Bar, digunakan untuk memilih tugas-tugas tertentu seperti menyimpan


project, membuka project, dll
• Main Toolbar, digunakan untuk melakukan tugas-tugas tertentu dengan cepat.
• Jendela Project, jendela ini berisi gambaran dari semua modul yang terdapat
dalam aplikasi anda. Anda dapat menggunakan icon Toggle Folders untuk
menampilkan modul-modul dalam jendela tersebut secara di group atau berurut
berdasarkan nama. Anda dapat menggunakan Ctrl+R untuk menampilkan jendela
project, ataupun menggunakan icon Project Explorer.
• Jendela Form Designer, jendela ini merupakan tempat anda untuk merancang
user interface dari aplikasi anda. Jadi jendela ini menyerupai kanvas bagi seorang
pelukis.

148 Pemrograman Aplikasi dengan VB dan VB.Net


• Jendela Toolbox, jendela ini berisi komponen-komponen yang dapat anda
gunakan untuk mengembangkan user interface.
• Jendela Code, merupakan tempat bagi anda untuk menulis kode. Anda dapat
menampilkan jendela ini dengan menggunakan kombinasi Shift-F7.
• Jendela Properties, merupakan daftar properti-properti object yang sedang
terpilih. Sebagai contohnya anda dapat mengubah warna tulisan (foreground)
dan warna latarbelakang (background). Anda dapat menggunakan F4 untuk
menampilkan jendela properti.
• Jendela Color Palette, adalah fasilitas cepat untuk mengubah warna suatu object.
• Jendela Form Layout, akan menunjukan bagaimana form bersangkutan
ditampilkan ketika run-time.
Jendela Toolbox merupakan jendela yang sangat penting bagi anda. Dari
jendela ini anda dapat mengambil komponen-komponen (object) yang akan
ditanamkan pada form untuk membentuk user interface.
• Pointer bukan merupakan suatu
kontrol; gunakan icon ini ketika anda
ingin memilih kontrol yang sudah
berada pada form.
• PictureBox adalah kontrol yang
digunakan untuk menampilkan image
dengan format: BMP, DIB (bitmap),
ICO (icon), CUR (cursor), WMF
(metafile), EMF (enhanced metafile),
GIF, dan JPEG.
• Label adalah kontrol yang digunakan
untuk menampilkan teks yang tidak
dapat diperbaiki oleh pemakai.
• TextBox adalah kontrol yang
mengandung string yang dapat
diperbaiki oleh pemakai, dapat
berupa satu baris tunggal, atau
banyak baris.
• Frame adalah kontrol yang
digunakan sebagai kontainer bagi
kontrol lainnya.
• CommandButton merupakan kontrol
hampir ditemukan pada setiap form,
dan digunakan untuk
membangkitkan event proses
Gambar 7.5. Toolbox VB 6. tertentu ketika pemakai melakukan
klik padanya.

Rekayasa Perangkat Lunak 149


• CheckBox digunakan untuk pilihan yang isinya bernilai yes/no, true/false.
• OptionButton sering digunakan lebih dari satu sebagai pilihan terhadap beberapa
option yang hanya dapat dipilih satu.
• ListBox mengandung sejumlah item, dan user dapat memilih lebih dari satu
(bergantung pada property MultiSelect).
• ComboBox merupakan konbinasi dari TextBox dan suatu ListBox dimana
pemasukkan data dapat dilakukan dengan pengetikkan maupun pemilihan.
• HScrollBar dan VScrollBar digunakan untuk membentuk scrollbar berdiri sendiri.
• Timer digunakan untuk proses background yang diaktifkan berdasarkan interval
waktu tertentu. Merupakan kontrol non-visual.
• DriveListBox, DirListBox, dan FileListBox sering digunakan untuk membentuk
dialog box yang berkaitan dengan file.
• Shape dan Line digunakan untuk menampilkan bentuk seperti garis, persegi,
bulatan, oval.
• Image berfungsi menyerupai image box, tetapi tidak dapat digunakan sebagai
kontainer bagi kontrol lainnya. Sesuatu yang perlu diketahui bahwa kontrol image
menggunakan resource yang lebih kecil dibandingkan dengan PictureBox
• Data digunakan untuk data binding
• OLE dapat digunakan sebagai tempat bagi program eksternal seperti Microsoft
Excel, Word, dll.

7.1.1. Prinsip Pokok Pemrograman Berbasis GUI


Secara prinsip ada dua bagian pokok dalam pengembangan aplikasi dengan
menggunakan VB, yaitu: visual design dan event-driven programming.

• Visual Design
Dalam lingkungan Windows, User-interface sangat memegang peranan
penting, karena dalam pemakaian aplikasi yang kita buat, pemakai senantiasa
berinteraksi dengan User-interface tanpa menyadari bahwa dibelakangnya berjalan
instruksi-instruksi program yang mendukung tampilan dan proses yang dilakukan.
Pada pemrograman Visual, pengembangan aplikasi selalu dimulai dengan
pembentukkan user interface. Untuk mendisain user interface, pengetahuan yang
paling dibutuhkan hanyalah pemahaman dasar tentang jenis dan kegunaan dari
control dan dasar-dasar bagaimana menggambar sebuah object.
Form dan control merupakan elemen-elemen dasar dalam user interface pada
aplikasi-aplikasi berbasis Windows. Dalam VB, elemen-elemen ini disebut obyek
karena dapat dimanipulasi seperti sebuah obyek. Obyek merupakan suatu
kombinasi dari kode dan data yang dapat diperlakukan sebagai satu kesatuan.

150 Pemrograman Aplikasi dengan VB dan VB.Net


Sebuah obyek memiliki sejumlah property dan sejumlah method, dan akan bereaksi
terhadap sejumlah event eksternal seperti halnya obyek fisik.
Sebagai ilustrasi (gambar 7.6), sebuah mobil adalah sebuah obyek fisik yang
memiliki property, method dan event. Salah satu property adalah warna. Biasanya
property warna dari mobil ditetapkan ketika sebuah mobil dibuat. Tetapi kalau kita
tidak suka dengan warna mobil yang kita beli, kita masih dapat merubahnya,
misalnya dengan mengecat ulang. Demikian juga dalam VB, property dari sebuah
control biasanya ditentukan ketika object dibuat (pada saat ditempatkan pada
sebuah form), tetapi kita dapat merubah property ini dengan memberikan nilai baru.
Kita dapat merubah nilai property pada saat disain (dengan menggunakan jendela
Properties) atau pada saat runtime (melalui kode program). Beberapa property
hanya tersedia pada saat disain, dan beberapa property hanya tersedia pada saat
runtime.

Gambar 7.6. Obyek, Property, Method dan Event

• Event-Driven Programming
Pemrograman suatu aplikasi bukanlah sesuatu yang mudah, namun ada
sebuah metodologi yang tidak boleh kita tinggalkan. Aplikasi yang dibuat dengan
VB bukanlah sebuah program yang monolithic (hanya ada satu urutan jalannya
program aplikasi). Ketika kita membuat program dengan VB, pertama kita harus
menentukan bagaimana aplikasi akan berinteraksi dengan pengguna. Atau dengan
Rekayasa Perangkat Lunak 151
kata lain, kita harus menentukan bagaimana setiap control bereaksi terhadap aksi
yang dilakukan pengguna (misalnya: click mouse, double-click mouse, penekanan
salah satu tombol pada keyboard, dan lain-lain). Konsep ini biasa disebut sebagai
Event-Driven Programming, karena bukan aplikasi yang menentukan alur namun
kejadian (event) yang disebabkan oleh pengguna yang menentukan alur dari
aplikasi. Program aplikasi yang kita buat bereaksi terhadap kondisi eksternal
(event), dan aksi dari pengguna yang menentukan bagaimana alur dari aplikasi.

7.1.2. Tipe Data, Variabel dan Konstanta


Secara umum tipe data, variabel dan konstanta dalam Visual Basic tidak banyak
berbeda dengan apa yang disampaikan pada Bab 5. Coba buka kembali Bab tersebut
untuk mengingat kembali bagian ini. Yang berbeda adalah bentuk pendeklarasian
variabel dan konstanta. Perhatikan contoh berikut.
Contoh 7.1. Contoh pendeklarasian variabel, konstanta dan tipe data.
Dim speed As Double
Dim timeElapsed As Double
Dim NumberStudent as Integer = 10
Dim velocity as Single
Dim Nama as String
Const phi as Single = 3.14

Pada contoh 7.1 kita bisa mendeklarasikan variabel dengan kata kunci Dim
sedangkan untuk konstanta menggunakan kata kunci Const. Kita juga bisa langsung
mengisikan nilai awal setelah definisi tipe data dari suatu variabel.
Salah satu keuntungan menggunakan pemrograman berbasis GUI seperti Visual
Basic adalah tersedianya obyek-obyek yang dapat diperlakukan sebagai tipe data.
Perhatikan contoh berikut ini.
Contoh 7.2. Contoh penggunaan tipe data obyek.
Dim frm As Form
Dim midfrm As MDIForm
Dim ctrl As Control
Dim obj As Object
Dim inv As frmInvoice
Dim txtSalary As TextBox
Dim wrk As Excel.Worksheet

Pada contoh 7.2 di atas, pernyataan Form, MDIForm, Control dan Object adalah
kontrol-kontrol yang dimiliki oleh Visual Basic. Sedangkan frmInvoice adalah form
yang telah kita beri nama frmInvoice. Visual Basic juga memungkinkan kita untuk
menggunakan obyek dari luar Visual Basic. Perhatikan pada baris terakhir di atas.
Kita menggunakan worksheet dari Excel untuk kita gunakan dalam program kita.

152 Pemrograman Aplikasi dengan VB dan VB.Net


7.1.3. Operator
Operator adalah simbol yang digunakan dalam bahasa pemrograman untuk
melakukan suatu operasi terhadap nilai data. Simbol operator bisa berupa karakter
ataupun kata khusus. Pada Visual Basic ada tiga kelompok operator utama, yaitu
operator aritmatika, operator perbandingan dan operator logika.
• Operator aritmatika
Operator aritmatika digunakan untuk operasi matematis terhadap nilai
data. Notasi-notasi yang digunakan tampak pada tabel berikut ini :
Tabel 7.1. Operator Aritmatika.

Notasi/simbol untuk operator ini memiliki hirarki kekuatan, artinya apabila ada
dua atau lebih operator digunakan bersama-sama, maka operator dengan hirarki
yang lebih tinggi akan dieksekusi lebih dulu. Hirarki kekuatan operator secara
berturut-turut adalah ^, * dan /, \, mod, + dan -. Operator * dan / adalah setara.
Demikian juga operator + dan -. Perhatikan contoh berikut ini.
Contoh 7.3. Contoh penggunaan hirarki operator aritmatika.
5 * 2 + 3 = 13
4 ^ 2 - 5 = 11
Pada contoh pertama, tanda * (kali) memiliki kekuatan yang lebih tinggi dari
tanda + (tambah) sehingga operasi perkalian dilakukan terlebih dahulu daripada
penjumlahan. Hasil yang diperoleh adalah 10 ditambah 3 bukan 5 dikali 5.
Sedangkan pada contoh kedua, tanda ^ (pangkat) mempunyai urutan kekuatan
lebih tinggi dari – (kurang) sehingga hasil akhirnya adalah 11 (yaitu dari 16
dikurangi 5). Untuk merubah urutan proses aritmatika dapat diatur dengan
menggunakan tanda kurung. Perhatikan contoh berikut :
Contoh 7.4. Contoh penggunaan kurung untuk mengatur hirarki operator.
5 * (2 + 3) = 25
4 ^ (2 – 5) = 0.015625
Pada contoh ini kita menggunakan angka dan operator yang sama seperti
contoh sebelumnya, namun dengan menggunakan tanda kurung untuk merubah

Rekayasa Perangkat Lunak 153


urutan proses. Pada contoh pertama proses yang pertama dilakukan adalah
penjumlahan 2 dan 3, kemudian baru dikalikan 5. Hasil akhirnya adalah 25
(bandingkan dengan contoh sebelumnya, yaitu 13). Sedangkan pada contoh kedua
proses pertama adalah 2 dikurangi 5 kemudian baru hasilnya digunakan sebagai
angka pangkat untuk 4 (menjadi 4^-3). Hasil yang diperoleh adalah 0.015625,
berbeda jauh dengan contoh sebelumnya yaitu 11. Dari kedua contoh ini dapat
dilihat bahwa tanda kurung memiliki kekuatan lebih tinggi dari operator lainnya.
Apabila ada lebih dari satu tanda kurung berjajar maka tanda kurung paling dalam
yang akan diproses terlebih dahulu. Perhatikan contoh berikut :
5 * ((2 + 2) / 8) = 2.5

• Operator perbandingan
Operator perbandingan digunakan untuk operasi yang membandingkan
nilai data. Simbol-simbol yang digunakan :
Tabel 7.2. Operator perbandingan.

• Operator logika
Operator logika digunakan untuk operasi yang membandingkan suatu
perbandingan. Simbol-simbol yang digunakan :
Tabel 7.3. Operator logika.

7.1.4. Struktur Kontrol Program


Struktur kontrol program atau kadang disebut sebagai struktur kendali
merupakan penerapan dari algoritma struktur percabangan dan struktur
pengulangan. Buka kembali Bab 5 untuk memperjelas kembali tentang
struktur algoritma.

154 Pemrograman Aplikasi dengan VB dan VB.Net


• Struktur percabangan.
Struktur percabangan dalam Visual Basic dapat dilakukan dengan
menggunakan If ... Then dan Select ... Case. If ... then digunakan jika
percabangan tidak terlalu banyak. Sedangkan Select ... Case digunakan jika
ada banyak percabangan. Perhatikan contoh penulisan If ... Then ini.
Contoh 7.5. Contoh penulisan If .. Then.
' Percabangan/pemilihan satu baris tanpa Else
If x > 0 Then y = x

' Percabangan/pemilihan satu baris dengan Else


If x > 0 Then y = x Else y = 0

' Percabangan/pemilihan satu baris dengan Else dan titik dua


If x > 0 Then y = x: x = 0 Else y = 0

' Percabangan ditulis dengan cara lebih dari satu baris


If x > 0 Then
y = x
x = 0
Else
y = 0
End If

' Penggunaan blok if


If x > 0 Then
y = x
ElseIf x < 0 Then
y = x * x
Else
x = -1
End If

Contoh 7.6. Contoh penulisan Select ... Case.


Dim position As Integer 'Pilihan
position = CInt(txtPosition.Text)
Select Case position
Case 1
txtOutcome.Text = "Menang"
Case 2
txtOutcome.Text = "Kalah"
Case 3
txtOutcome.Text = "Seri"
Case Else
txtOutcome.Text = "Tidak bertanding."
End Select

Rekayasa Perangkat Lunak 155


Coba perhatikan contoh aplikasi dengan menggunakan If ... Then dan Select ... Case
berikut ini.
Contoh 7.7. Program aplikasi dengan if ... then.
Aktifkan VB 6 kemudian buatlah form sebagai berikut :

Atur property untuk masing-masing obyek sebagai berikut :

Buka Jendela Code dan pada bagian Code Editor ketikkan kode programnya sebagai
berikut :
Private Sub Command1_Click()
If Text1.Text = "nusantara" Then Image1.Visible = True
End Sub

Klik menu Project > Project1 Properties lalu klik tab General. Gantilah Startup
Object-nya menjadi Form5. Coba jalankan Project1 :
o Ketikkan sembarang teks pada TextBox lalu klik tombol OK atau tekan
Enter, tidak terjadi apa-apa.
o Ketikkan “nusantara” pada TextBox lalu klik tombol OK atau tekan Enter,
gambar computer akan muncul.

156 Pemrograman Aplikasi dengan VB dan VB.Net


Penjelasan kode program :

Modifikasi kode programnya menjadi sebagai berikut :


Private Sub Command1_Click()
If Text1.Text = "nusantara" Then
Image1.Visible = True
Text1.Enabled = False
Command1.Enabled = False
Else
MsgBox "Passwordnya Salah !"
Text1.Text = ""
Text1.SetFocus
End If
End Sub

Coba jalankan kembali Project1 :


• Ketikkan sembarang teks pada TextBox lalu klik tombol OK atau tekan Enter,
muncul kotak pesan “Passwordnya Salah !”. Klik tombol OK pada kotak pesan
tersebut.
• Ketikkan “nusantara” pada TextBox lalu klik tombol OK atau tekan Enter,
gambar computer akan muncul. TextBox dan tombol OK menjadi disable
(tidak bisa digunakan).

Penjelasan kode program :

Rekayasa Perangkat Lunak 157


Catatan tambahan :
o Teks “nusantara” harus diketik huruf kecil semua. Ingat : data string
bersifat case sensitive !
o Agar password-nya tidak bersifat case sensitive, modifikasi pernyataan
kondisinya menjadi :
If LCase(Text1.Text) = "nusantara" Then
Fungsi LCase adalah untuk mengkonversi semua string yang diinput ke
Text1.Text menjadi huruf kecil, walaupun user menginputnya dengan
huruf kapital.

Contoh 7.8. Program aplikasi dengan Select ... Case.


Aktifkan VB 6 melalui tombol Start, kemudian buat form sebagai berikut :

Atur property untuk masing-masing obyek sebagai berikut :

158 Pemrograman Aplikasi dengan VB dan VB.Net


Buka Jendela Code dan pada bagian Code Editor ketikkan kode programnya sebagai
berikut :
Private Sub Form_Load()
List1.AddItem "Disket"
List1.AddItem "Buku"
List1.AddItem "Kertas"
List1.AddItem "Pulpen"
End Sub

Private Sub Command1_Click()


Dim harga As Currency, total As Currency
Dim jumlah As Integer
Dim diskon As Single
Dim satuan As String
If List1.Text = "" Then
MsgBox "Anda belum memilih barang !!"
List1.ListIndex = 0
Exit Sub
End If
If Text1.Text = "" Then
MsgBox "Anda belum mengisi jumlah barang !!"
Text1.SetFocus
Exit Sub
End If
Select Case List1.Text
Case "Disket"
harga = 35000
satuan = "Box"
Case "Buku"
harga = 20000
satuan = "Lusin"
Case "Kertas"
harga = 25000
satuan = "Rim"
Case "Pulpen"
harga = 10000
satuan = "Pak"
End Select

lblBarang.Caption = "Barang : " & List1.Text


lblHarga.Caption = "Harga : " & Format(harga,
"Currency") & "/" & satuan
lblJumlah.Caption = "Jumlah : " & Text1.Text & " " &
satuan
jumlah = Text1.Text
Select Case jumlah
Case Is < 10
diskon = 0
Case 10 To 20

Rekayasa Perangkat Lunak 159


diskon = 0.15
Case Else
diskon = 0.2
End Select
total = jumlah * (harga * (1 - diskon))
lblDiskon.Caption = "Diskon : " & Format(diskon, "0 %")
lblTotal.Caption = "Total Bayar : " & Format(total,
"Currency")
End Sub

Klik menu Project > Project1 Properties lalu klik tab General. Gantilah Startup
Object-nya menjadi Form6.
Coba jalankan Project1 :
o List1 akan terisi nama-nama barang.
o Klik tombol OK, akan muncul kotak pesan "Anda belum memilih barang !!".
o Klik OK, nama barang pertama akan terpilih secara otomatis. Anda boleh
memilih nama barang yang lainnya.
o Klik tombol OK, akan muncul kotak pesan "Anda belum mengisi jumlah
barang !!".
o Klik OK, text1 akan menjadi focus. Isi jumlah barangnya, misalnya : 10.
o Klik tombol OKm akan tampil : nama barang, harga barang (per-satuannya),
jumlah barang (dengan satuannya), diskon dan total bayar.
o Coba ganti pilihan nama barang (pada List1) dan jumlah barang (pada Text1)
lalu klik lagi tombol OK.

160 Pemrograman Aplikasi dengan VB dan VB.Net


Penjelasan kode program :

Catatan :
o Bila jumlah barang diisi dengan selain angka akan muncul pesan error.
o Untuk mengecek isi Text1 angka atau bukan, tambahkan kode berikut :
If Not IsNumeric(Text1.Text) Then
MsgBox "Isi jumlah barang harus angka !!"
Text1.SetFocus
Exit Sub
End If

Rekayasa Perangkat Lunak 161


• Struktur pengulangan.
Struktur pengulangan yang mungkin paling banyak digunakan dalam Visual
Basic adalah For. Dalam Visual Basic, struktur for ini dikenal sebagai For ... Next.
Cara penulisan umum For ... Next adalah sebagai berikut:
For counter = nilaiAwal To nilaiAkhir [Step increment]
' pernyataan yang akan diulang...
Next

Pernyataan Step dan increment sudah disinggung di Bab 5 sehingga tidak


akan dibahas lagi di sini. Perhatikan contoh penggunaan For ... Next dalam aplikasi
berikut ini.
Coba perhatikan contoh pengulangan dengan For ... Next berikut ini.
Contoh 7.9. Pengulangan dengan For ... Next.
Dim d As Single, count As Long
For d = 0 To 10 Step 2
count = count + 1
Next
Print count
Pada Contoh 7.9, d adalah counter dan kita deklarasikan sebagai single. Kita
juga menggunakan increment dengan nilai 2. Nilai increment dapat berupa bilangan
bulat atau pecahan. Namun nilai pecahan terkadang memberikan hasil yang tidak
kita inginkan. Bagaimanakah output dari program di atas? Pada akhir program
maka nilai count akan sama dengan 5.
Struktur pengulangan yang lebih fleksibel dari For ... Next adalah Do ... Loop.
Do ... Loop dapat berbentuk berbeda-beda. Perhatikan contoh berikut.
Contoh 7.10. Pengulangan dengan For ... Next.
Do While x > 0
y = y + 1
x = x \ 2
Loop

Do
y = y + 1
x = x \ 2
Loop Until x <= 0

Pada bagian pertama dari Contoh 7.10 kita menggunakan Do While ... Loop.
Cara ini sama persis dengan struktur pengulangan dengan While yang telah kalian
pelajari pada Bab 5. Pernyataan di bawah Do While, akan dikerjakan jika kondisi
pada Do While bernilai benar. Jika tidak maka tidak akan dieksekusi.
Bagian kedua dari Contoh 7.10, kita menggunakan Do ... Loop Until untuk
melakukan pengulangan. Pada bentuk seperti ini, pengulangan dilakukan sampai
162 Pemrograman Aplikasi dengan VB dan VB.Net
kondisi pada Loop Until bernilai benar. Jadi selama kondisi di depan Loop until
masih bernilai salah maka pengulangan akan terus dilakukan. Atau Do ... Loop ini
merupakan kebalikan dari Do While. Melihat kedua bagian tersebut, apabila kita
inisialisasi x = -4 dan Y = 5, bagaimanakah hasilnya? Pada pengulangan dengan Do
While, tidak akan memberikan hasil karena nilai X kurang dari 0 sehingga
pengulangan tidak dilakukan. Sedangkan pada Do ... Loop Until, pernyataan di
bawah Do masih dikerjakan, karena kondisi baru diperiksa di akhir pengulangan.
Sehingga nilai X akan bernilai -2 dan Y bernilai 6.
Berikut ini adalah contoh progam aplikasi dengan menggunakan struktur
pengulangan.
Contoh 7.11. Program aplikasi dengan struktur pengulangan.
Buka VB dan buatlah form sebagai berikut :

Atur property seperti tabel berikut :

Buka Jendela Code dan pada bagian Code Editor ketikkan kode programnya sebagai
berikut :
Dim i As Integer

Private Sub Command1_Click()


List1.Clear
For i = 1 To 100

Rekayasa Perangkat Lunak 163


List1.AddItem "Angka " & i
Next i
End Sub

Private Sub Command2_Click()


List1.Clear
For i = 100 To 1 Step -2
List1.AddItem "Angka " & i
Next i
End Sub

Private Sub Command3_Click()


List1.Clear
i = Asc("A")
Do Until i > Asc("Z")
List1.AddItem "Huruf " & Chr(i)
i = i + 1
Loop
End Sub

Private Sub Command4_Click()


List1.Clear
i = Asc("Z")
Do While i >= Asc("A")
List1.AddItem "Huruf " & Chr(i)
i = i - 1
Loop
End Sub

Coba jalankan program. Tekan keempat tombol yang ada pada form bergantian.
Cobalah cermati output apa yang keluar dari eksekusi program di atas.

7.1.5. Prosedur dan Fungsi


Ada beberapa jenis procedure yang digunakan dalam Visual Basic :
• Sub procedure yang tidak menggembalikan nilai
• Function procedure yang mengembalikan nilai
• Property procedure yang dapat mengembalikan nilai dan diisi nilai yang mengacu
pada suatu objek.

• Sub procedure
Syntax penulisan Sub procedure:
[Private|Public][Static]Sub namaprosedur (argumen-
argumen)

164 Pemrograman Aplikasi dengan VB dan VB.Net


pernyataan-pernyataan
End Sub

Setiap kali procedure dipanggil, maka pernyataan-pernyataan yang berada di


antara Sub dan End Sub akan dijalankan. Argumen pada procedure adalah nilai
yang akan dilewatkan saat pemanggilan procedure.
Di Visual Basic Sub Procedure dapat dibagi atas dua yaitu :
o General Procedure, procedure yang diaktifkan oleh aplikasi.
o Event Procedure, Procedure yang diaktifkan oleh system sebagai respon
terhadap event.
Contoh 7.12. Contoh sub procedure.
Pada contoh ini kita akan membuat sub procedure dengan nama CenterForm yang
dapat digunakan untuk menampilkan form ketengah Layar, dimana x adalah
parameter yang merupakan form yang akan dibuat ketengah layar.
Sub CenterForm(x As Form)
x.Top = (Screen.Height - x.Height) \ 2
x.Left = (Screen.Width - x.Width) \ 2
End Sub

‘memanggil sub prosedur CenterForm


Private Sub Form_Load()
Call CenterForm(Me)
End Sub

Pada contoh 7.12, sub procedure CenterForm membutuhkan argumen form.


Sehingga ketika dipanggil argumen juga harus dicantumkan. Perhatikan pada baris
Call CenterForm(Me). Me di sini adalah argumen dari sub procedure. Pada Visual
Basic, Me merujuk pada form dimana kode program ini dibuat.
• Function procedure
Ada dua jenis function dalam Visual Basic, yaitu Built-in Function dan Function
Procedure. Pada Visual Basic telah disediakan banyak Built-in Function yang dapat
digunakan untuk berbagai tujuan seperti fungsi-fungsi untuk perhitungan
matematika, manipulasi string, manipulasi tipe data dan lain-lain. Pada bab ini tidak
akan dibahas detil fungsi-fungsi built-in tersebut. Namun pada lampiran, dapat
dilihat beberapa fungsi built-in yang sering digunakan.
Meskipun sudah tersedia sangat banyak, tetapi fungsi-fungsi yang tersedia
tersebut bersifat umum dan kandang-kadang tidak memenuhi kebutuhan
programer, untuk keperluan tersebut anda dapat menciptakan fungsi-fungsi sendiri
yang dikenal dengan Function procedure. Atau kita bisa mengatakan sebagai
fungsi buatan sendiri.
Sintaks penulisan function procedure :

Rekayasa Perangkat Lunak 165


[Private|Public][Static]Function namaprocedure
(argumen-argumen) [As type]
statements
End Function

Ada tiga perbedaan antara function dan procedure :


o Umumnya anda dapat memanggil suatu function dengan mengikutkan
nama function sisi kanan dari statement atau ekspresi. (returnvalue =
function()).
o Function memiliki type data seperti suatu variabel. Ini menentukan type
yang dari nilai yang dikembalikan.
o Nilai kembali dimasukkan ke namafunction itu sendirinya, dan suatu
function dapat menjadi bagian dari suatu ekspresi yang panjang.
Perhatikan contoh fungsi berikut ini.
Contoh 7.13. Contoh Fungsi.
Fungsi ini adalah fungsi yang bekerja untuk menampilkan nama bulan dalam bahasa
Indonesia dari data tanggal yang dimasukkan. Argumen yang dibutuhkan dalam
fungsi ini adalah x dan bertipe data date.
Function Bulan(x As Date)
Dim sRet As String

Select Case Month(x)


Case 1: sRet = "Januari"
Case 2: sRet = "Februari"
Case 3: sRet = "Maret"
Case 4: sRet = "April"
Case 5: sRet = "Mei"
Case 6: sRet = "Juni"
Case 7: sRet = "Juli"
Case 8: sRet = "Agustus"
Case 9: sRet = "September"
Case 10: sRet = "Oktober"
Case 11: sRet = "Nopember"
Case 12: sRet = "Desember"
Case Else
sRet = "tidak sah"
End Select

Bulan = sRet

End Function

166 Pemrograman Aplikasi dengan VB dan VB.Net


7.2. Akses dan Manipulasi Basis Data dengan Visual Basic
Salah satu keunggulan Visual Basic dibandingkan dengan Bahasa pemrograman
yang lain, adalah kemampuan dalam akse dan manipulasi data. Hal ini karena Visual
Basic dikembangkan oleh Microsoft yang juga membuat sistem operasi Windows.
Sehingga fungsi-fungsi basis data mendapat dukungan yang sangat lengkap.
Visual Basic menyediakan beragam cara untuk mengakses dan memanipulasi
data. Perhatikan diagram pada gambar berikut ini.

Gambar 7.7. Berbagai cara akse basis data dari Visual Basic.

• ODBC
ODBC singkatan dari Open Data Base Connectivity. Merupakan sekumpulan
fungsi yang membolehkan kita untuk koneksi pada basis data lokal atau yang berada
di jaringan. Biasanya ODBC digunakan untuk mengakses berbagai tipe basis data
antara lain, MS FoxPro, MS Access, MS SQL Serve, Oracle atau bahka data yang
tersimpan dalam bentuk file data.

• DAO
DAO atau Data Access Object adalah antarmuka dari Microsoft Jet, perangkat
utama penggerak MS Access. Kita dapat membuat basis data dengan MS Access
kemudian kita manipulasi dengan Visual Basic melalui DAO dengan mudah. Karena

Rekayasa Perangkat Lunak 167


DAO langsung berhubungan dengan MS Access, maka kita dapat menggunakan
fungsi-fungsi DBMS dari Visual Basic.

• OLE DB
OLE DB adlah teknologi untuk mengakses basis data level dasar yang
sebenarnya dimaksudkan untuk menggantikan fungsi ODBC. Namun dalam
perkembangannya ODBC dan OLE DB memiliki perbedaan, yaitu OLE DB berbasis
pada teknologi COM dan dapat digunakan untuk mengakses basis data yang bukan
bersifat relasional.

• ADO
ADO (ActiveX Data Object) adalah antarmuka level atas dari OLE DB. ADO
dikembangkan di atas OLE DB untuk melengkapi fungsi-fungsi yang tidak dimiliki
oleh OLE DB sehingga memudahkan programmer dalam membuat aplikasi.

7.2.1. Membuat dan Manipulasi Basis Data dengan ADO


Secara prinsip, apapun metode akses yang digunakan, cara bekerja dengan
basis data dari Visual Basic adalah sama. Dibutuhkan beberapa tahapan untuk dapat
bekerja dengan basis data. Pada bagian ini kita akan menggunakan ADO sebagai
teknologi yang lebih fleksibel dari teknologi yang lain. Tapi ini dapat dikembangkan
dengan teknologi yang lain.
• Koneksi dengan basis data.
Koneksi dengan basis data berarti kita menghubungi basis data supaya terbuka
dan bisa kita akses data yang ada didalamnya. Berikut contoh pernyataan untuk
koneksi ke basis data biblio.mdb
Dim cn As New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" _
& "Data Source=C:\Microsoft Visual Studio\Vb98\Biblio.mdb"

• Mengakses record data pada basis data..


Kumpulan dari record-record data dalam basis data, pada ADO disebut sebagai
recordset. Untuk bekerja dengan recordset ini kita membutuhkan tabel atau
view/query yang ada dalam basis data. Perhatikan contoh berikut ini.
Const DBPATH = "C:\Program Files\Microsoft Visual
Studio\Vb98\NWind.mdb"
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset
cn.Open "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" &
DBPATH
rs.Source = "Employees"
rs.Open , cn

168 Pemrograman Aplikasi dengan VB dan VB.Net


Pada kode di atas kita menggunakan basis data Nwind.mdb sebagai Data
source. Kemudian sebagai sumber recordset, kita memanggil tabel “Employees”.
Variabel rs adalah recordset. Setelah kita tentukan sumber tabelnya, kita dapat
membuka tabel tersebut dengan pernyataan open.
Setelah terbuka tabel sumbernya, kita dapat mengakses data yang ada di
dalamnya. Berikut ini contoh kode untuk mengakses data pada suatu tabel.
Dim i As Integer
For i = 0 To rs.Fields.Count
Print rs.Fields(i).Name & " = " & rs.Fields(i).Value
Next
Perintah di atas akan mencetak seluruh baris dan kolom Name yang ada pada
tabel Employees yang telah terbuka sebelumnya. Cara yang paling cepat adalah
dengan menggunakan perintah For Each seperti kode berikut.
Dim fld As ADODB.Field
For Each fld In rs.Fields
Print fld.Name & " = " & fld
Next

• Manipulasi data dalam recordset


Untuk mengupdate data pada suatu recordset dapat dilakukan dengan cara
sebagai berikut:
rs.Update Array("FirstName", "LastName", "BirthDate",
"HireDate"), _
Array("John", "Smith", #1/1/1961#, #12/3/1994#)
Sedangkan untuk menambah recordset perintah yang digunakan adalah
sebagai berikut:
rs.AddNew
rs("FirstName") = "Robert"
rs("LastName") = "Doe
rs("BirthDate") = #2/5/1955#
rs.Update
Menghapus record tertentu dapat dilakukan dengan perintah seperti berikut.
rs.Delete
rs.MoveNext
If rs.EOF Then rs.MoveLast

7.3. Teknologi COM


7.3.1. Pengertian dan Konsep COM
COM atau Component Object Model adalah infrastruktur yang disediakan oleh
Visual Basic untuk mengakses obyek-obyek atau kontrol-kontrol lain sepanjang punya
antar muka yang dapat diakses oleh Visual Basic.

Rekayasa Perangkat Lunak 169


Untuk dapat menggunakan COM pada Visual Basic, kita dapat membuka
Reference Dialog dengan cara: dari menu Project pilih add Reference. Jendela
seperti pada Gambar 7.8 akan terbuka.

Gambar 7.8. Jendela Reference.

Pada Gambar 7.8 kita memilih COM atau obyek yang ingin kita gunakan. Pada
contoh ini kita memilih “Microsoft Word 8.0 Object Library”. Setelah kita klik OK maka
kita dapat menggunakan obyek yang kita pilih ini dalam kode program kita. Berikut
contoh penggunaan obyek tersebut.
Contoh 7.14. Contoh penggunaan COM.
Private Sub cmdCheck_Click()
Dim text As String
Dim suggestion As Word.SpellingSuggestion
Dim colSuggestions As Word.SpellingSuggestions

' menambahkan dokumen bila belum ada dokumen yang terbuka.


If MSWord.Documents.Count = 0 Then MSWord.Documents.Add
text = Trim$(txtWord.text)

lstSuggestions.Clear
If MSWord.CheckSpelling(text) Then
lstSuggestions.AddItem "(correct)"

170 Pemrograman Aplikasi dengan VB dan VB.Net


Else
Set colSuggestions =
MSWord.GetSpellingSuggestions(text)
If colSuggestions.Count = 0 Then
lstSuggestions.AddItem "(no suggestions)"
Else
For Each suggestion In colSuggestions
lstSuggestions.AddItem suggestion.Name
Next
End If
End If
End Sub

Pada kode di atas kita menggunaka salah satu metode dari obyek yang kita
buka sebelumnya (“Microsoft Word 8.0 Object Library”). Metode yang ingin kita
gunakan adalah SpellingSuggestion (lihat kode pada bagian pendeklarasian
variabel). Dengan cara yang sama kita dapat menggunakan metode atau fungsi-
fungsi yang kita inginkan dari obyek COM yang telah kita muat.
Pada jendela Reference di Gambar 7.8, tersedia banyak sekali COM yang dapat
kita gunakan. Cobalah untuk membuka satu persatu dan lihat apa fungsinya.

7.4. Ringkasan
Pada bab ini kalian telah mempelajari pemrograman dengan Visual Basic.
Dimulai dengan penerapan variabel, konstanta, tipe data dan operator. Kemudian
dilanjutkan dengan strukturkendali pemrograman baik percabangan maupun
pengulangan. Penggunaan procedure dan function juga disampaikan untuk
melengkapi dasar pemrograman dengan Visual Basic.
Pada bagian selanjutnya kalian juga telah mempelajari teknik akses dan
manipulasi data dengan menggunakan ADO. Bagian akhir ditutup dengan bagaimana
membuka dan menggunakan teknologi COM yang disediakan oleh Visual Basic.

7.5. Soal-Soal Latihan


1. Berapakah hasil dari ekspresi Visual Basic berikut ini:
a. 3*4
b. 7^2
c. 1/(2^3)
d. 3 + (4*5)
e. (5 - 3)*4
f. 3*((-2)^5)
2. Berapakah hasil dari operasi menggunakan mod berikut ini:
a. 6 Mod 2
b. 14 Mod 4

Rekayasa Perangkat Lunak 171


c. 7 Mod 3
d. 5 Mod 5
3. Periksalah penamaan variabel dalam Visual Basic ini. Tentukan mana yang
diperbolehkan dan yang tidak.
a. sales.2006
b. room&Board
c. fOrM_1040
d. 1040B
e. expenses?
f. INCOME 2006

4. Jika a = 2, b = 3, dan c = 4, berapakah hasil dari ekspresi berikut ini.


a. (a*b) + c
b. a*(b + c)
c. (1 + b)*c
d. a^c
e. b^(c - a)
f. (c - a)^b

5. Buatlah program untuk menghitung ekspresi berikut ini.


a. 7•8 + 5
b. (1 + 2•9)3
c. 5.5% of 20
d. 15 - 3(2 + 34)
e. 17(3 + 162)
f. 4 1/2 - 3 5/8

6. Bukalah Gambar 5.6 dan 5.7 pada Bab 5. Buatlah program dalam Visual
Basic. Gunakan kontrol TextBox dan CommandButton pada soal ini.
7. Bukalah Gambar 5.9 dan 5.10 pada Bab 5. Buatlah program dalam Visual
Basic.
8. Bukalah Gambar 5.15 dan 5.17 pada Bab 5. Buatlah program dalam Visual
Basic.

172 Pemrograman Aplikasi dengan VB dan VB.Net


Gambar cangkir dengan uap mengepul di atasnya
serta tulisan Java seperti Gambar 8.1 ini mungkin
pernah kalian lihat. Ya, ini adalah logo dari bahasa
pemrograman Java yang popularitasnya meningkat
beberapa tahun belakangan ini. Banyak game dan
aplikasi yang digunakan pada perangkat mobile seperti
telepon selular dan PDA dibuat dengan bahasa ini.
Bahasa ini dikenal karena portabilitas dan dukungan
pada konsep pemrograman berorientasi obyek.
Bab ini meliputi dua standar kompetensi, yaitu
membuat program dalam bahasa pemrograman
berorientasi obyek dan membuat program aplikasi
menggunakan Java. Hal ini karena kedekatan konsep
antara Java dan pemrograman berorientasi obyek.
Standar kompetensi membuat program dalam bahasa
pemrograman berorientasi obyek terdiri dari empat
kompetensi dasar yaitu tipe data dan kontrol program,
Gambar 8.1. Logo Java. pembuatan kelas, penggunaan inheritance,
polymorphism, dan overloading, dan penggunaan
interface dan paket. Sedangkan standar kompetensi membuat program aplikasi
menggunakan Java terdiri dari lima kompetensi dasar, yaitu menjelaskan file I/O, tipe
data dan variabel, menerapkan operator, menjelaskan exception handling,
menerapkan multi-threading dan menjelaskan network programming.
Dalam penyajian pada buku ini, satu sub bab tidak langsung merujuk pada satu
kompetensi dasar. Ringkasan diletakkan pada setiap akhir bab kemudian dilanjutkan
dengan soal-soal latihan. Sebelum mempelajari kompetensi ini ingatlah kembali
sistem operasi, prinsip pemecahan masalah, algoritma pemrograman dasar dan
lanjutan, pemrograman dengan VB dan VB.Net dan materi-materi pendukung dari
mata pelajaran lain.

Rekayasa Perangkat Lunak 173


TUJUAN
Setelah mempelajari bab ini diharapkan pembaca akan mampu :
o Memahami konsep pemrograman berorientasi obyek
o Menjelaskan File I/O, tipe data dan variabel pada Java
o Menggunakan operator
o Menerapkan kontrol program
o Menjelaskan Exception Handling
o Menerapkan Multi-Threading
o Menjelaskan Network Programming
o Membuat program berorientasi obyek dengan class
o Menggunakan prinsip inheritance, polymorphism dan overloading
o Membuat program berorientasi obyek dengan interface dan paket

8.1. KONSEP PEMROGRAMAN BERORIENTASI OBYEK


Pemrograman Berorientasi Obyek (Object Oriented Programming – OOP)
adalah programming paradigm yang menggunakan obyek dan interaksinya untuk
merancang aplikasi dan program komputer. OOP tidak banyak digunakan sebelum
awal tahun 1990an. Tapi sekarang menjadi sesuatu yang sudah lumrah digunakan.
Bahasa-bahasa pemrograman seperti keluarga dotNet dari Microsoft (Visual Basic.Net,
Visual C#, dan Visual J), Borland Delphi, Java, Phyton, PHP versi 5 ke atas, C++ dan
banyak lainnya merupakan bahasa pemrograman yang mendukung konsep OOP.
Apakah obyek itu? Semua benda yang ada didunia ini dapat kita sebut sebagai
obyek. Guru mata pelajaran RPL kalian adalah suatu obyek. Buku yang kalian
pegang ini juga suatu obyek. Bahkan mata pelajaran RPL adalah juga sebuah obyek.
Setiap obyek akan mempunyai karakteristik dan tingkah laku tertentu. Karakteristik
disebut attribute dan tingkah laku disebut sebagai behavior atau method.
Dalam difinisi pemrograman berorientasi obyek dikenal adanya kelas dan
obyek. Class atau kelas mendefinisikan karakteristik abstrak dari sesuatu termasuk
atribut atau sifat-sifat dari sesuatu dan apa yang dapat dikerjakan oleh sesuatu
(method). Sebagai contoh, mobil adalah sebuah kelas yang memiliki attribut warna,
merek, tipe dan lain-lain. Mobil juga punya method antara lain, maju, mundur dan
berhenti (lihat Gambar 8.2).

Gambar 8.2. Kelas, atribut dan method.

174 Pemrograman Berorientasi Obyek dengan Java


Obyek adalah contoh dari kelas yang sudah didefinisikan. Atribut dan method
dari kelas secara otomatis akan menurun pada obyek namun dengan kekhususan.
Sebagai ilustrasi kita perhatikan Gambar 8.2. Pada gambar tersebut, kita bisa
identifikasi kelasnya adalah mobil dengan atribut dan methodnya. Obyeknya adalah
sebuah mobil sedan dengan merk Toyota, dan warnanya adalah merah. Sedan itu
juga memiliki method maju, mundur dan berhenti. Pada kasus ini mobil sedan
disebut sebagai instance atau turunan dari kelas mobil.
Ada beberapa konsep penting yang kalian harus pahami dalam pemrograman
berorientasi yaitu, abstraksi, enkapsulasi, inheritance dan polymorphism.

8.1.1. Abstraksi
Abstraction atau disebut juga composition merupakan prinsip penyederhanaan
dari sesuatu yang kompleks dengan cara memodelkan kelas sesuai dengan
masalahnya. Untuk lebih memperjelas pengertian coba perhatikan Gambar 8.3. Pada
gambar tersebut terlihat sebuah mobil jika dipecah-pecah bagian-bagiannya kita akan
dapatkan seperti ban, mesin, rangka mobil, kaca, dan lain-lain dan hal in berlaku
sebaliknya. Jika kita gabungkan bagian-bagian tersebut maka kita akan mendapatkan
sebuah kelas mobil. Pada pemrograman berorientasi obyek biasanya kalau kita
menjumpai beberapa kelas atau obyek yang kalau diidentifikasi memiliki banyak
kesamaan atribut dan method maka kita akan menggabungkan kelas-kelas tersebut
menjadi satu super class.

Gambar 8.3. Contoh abstraction.

8.1.2. Enkapsulasi
Prinsip encapsulation adalah prinsip penyembunyian detil dari sebuah kelas
terhadap obyek yang berinteraksi terhadapnya. Sebagai contoh ketika kita
menjalankan mobil, sebenarnya kita sedang berinteraksi dan kita meminta kepada
mobil untuk menjalankan methodnya seperti maju, mundur atau berhenti. Kita
berinteraksi hanya dengan beberapa bagian dari mobil (interface) seperti persneling,
setir, pijakan gas, pijakan rem dan bagian lain. Tapi detil proses yang terjadi didalam
mobil bagaimana bisa maju, mundur atau berhenti kita tidak perlu tahu.

Rekayasa Perangkat Lunak 175


8.1.3. Inheritance
Inheritance atau pewarisan adalah prinsip pewarisan sifat dari orang tua ke
anak atau turunannya yang diterapkan pada kelas. Orang tua memiliki atribut dan
method yang lebih umum dibandingkan dengan anak atau turunannya. Pada Gambar
8.4. kita bisa tahu bahwa mobil memiliki atribut dan method yang lebih umum
dibandingkan dengan sedan , truk atau bus. Mobil sebagai kelas yang mewarisi
disebut sebagai super class, sedangkan sedan, truk dan bus sebagai kelas yang
diwarisi disebut sub class.

Gambar 8.4. Pewarisan.

8.1.4. Polymorphism
Polymorphism mungkin merupakan konsep pemrograman beroerientasi obyek
yang paling sulit dimengerti. Arti dari polymorphism adalah kemampuan dari suatu
obyek untuk mempunyai lebih dari satu bentuk. Atau dalam pengertian lain adalah
kita dapat menerapkan sesuatu hal yang berbeda melalui suatu cara yang sama.
Sebagai contoh kalau ada empat ekor hewan berbeda yaitu burung, ular, katak, dan
singa kemudian kita minta untuk bergerak, maka burung akan terbang, ular akan
melata, katak melompat, singa mungkin akan berlari. Jadi suatu method yang sama
mungkin bisa diterapkan secara lain jika obyek yang menerapkan adalah berlainan.

8.2. PENGENALAN PADA JAVA


Bahasa pemrograman Java pertama lahir dari The Green Project, yang berjalan
selama 18 bulan, dari awal tahun 1991 hingga musim panas 1992. Proyek tersebut
menggunakan versi yang dinamakan Oak. Nama Oak ini tidak dipakai untuk versi
release Java karena sebuah perangkat lunak sudah terdaftar dengan merek dagang
tersebut, sehingga diambil nama penggantinya menjadi "Java". Nama ini diambil dari
kopi murni yang digiling langsung dari biji (kopi tubruk). Saat ini Java berada
dibawah lisensi Sun Microsystems
Menurut definisi dari Sun, Java adalah nama untuk sekumpulan teknologi untuk
membuat dan menjalankan perangkat luinak pada komputer standalone ataupun pada
lingkungan jaringan. Orang orang yang berkecimpung dalam dunia pemrograman
lebih suka menyebut Java sebagai sebuah teknologi dibanding hanya sebuah bahasa
pemrograman, karena Java lebih lengkap dibanding sebuah bahasa pemrograman
konvensional.

176 Pemrograman Berorientasi Obyek dengan Java


8.2.1. Kebutuhan Perangkat Lunak
Untuk membuat program Java paling tidak harus tersedia dua buah software
yaitu:
• Java 2 SDK Standard Edition (J2SE).
Perangkat lunak ini merupakan yang akan kita gunakan untuk mengkompilasi
kode program Java yang kita buat. Selain itu pada perangkat lunak ini tersedia
kelas-kelas yang dapat kita gunakan untuk membangun aplikasi desktop, grafis,
keamanan, konektivitas basis data dan jaringan. Perangkat lunak ini dapat di-
download gratis di situs Sun Microsystem. Setelah itu perangkat lunak ini harus
diinstal pada system operasi yang kita pakai.
• Text Editor.
Perangkat lunak ini berfungsi untuk menuliskan kode-kode program.
Notepad, Vi, Gedit, merupakan contoh-contoh teks editor yang dapat digunakan.
Namun menggunakan teks editor agak menyulitkan karena tidak tersedia fasilitas
bantu yang memudahkan dalam menuliskan kode program. Saat ini beberapa IDE
tersedia gratis di internet. IDE tersebut telah menyediakan banyak fasilitas seperti
syntax coloring, auto completion, dan template untuk memudahkan membuat
aplikasi berbasis Java. NetBeans (www.netbeans.org) dan Eclipse (www.eclipse.org)
merupakan dua buah IDE yang sangat terkenal dan sangat kuat. Gambar 8.5.
menunjukkan tampilan NetBeans IDE.

Gambar 8.5. NetBeans IDE.

Rekayasa Perangkat Lunak 177


8.2.2. Kompilasi Kode Program
Sebelum kita membuat program dan mengkompilasinya kita harus mengatur
ClassPath. ClassPath adalah suatu sistem variabel yang digunakan untuk
mengatakan pada program yang ditulis dengan bahasa Java tempat lokasi-lokasi yang
akan digunakan. Misalkan kita meletakkan kode program kita di direktori
d:\TestCode\Java, maka kita perlu mengatur path agar kita bisa menggunakan
compiler java dari direktori ini. Berikut ini langkah-langkah membuat classpath:
• Buka command-prompt di Windows kemudian setelah terbuka ketikkan :
Set PATH=C:\progra~1\java\jdk1.5.0\bin;%PATH%
Set CLASSPATH=.;D:\TestCode\Java
Path di atas adalah jika kita menggunakan JDK versi 1.5, jika versi yang lain
maka tinggal menyesuaikan.
• Periksa apakah setting sudah benar dengan mengetikkan perintah java pada
direktori manapun dari command prompt.
Setelah classpath terbentuk, coba buka Notepad kemudian ketikkan kode
berikut ini.
public class Main {
//isi blok
public static void main(String[] args) {
System.out.println("Hallo ini Java lho");
}
}
Kemudian simpan file kode tersebut dengan nama yang sama dengan class
yang ada pada kode tersebut yaitu Main dan diakhiri dengan ekstensi .java. Simpan
di lokasi yang telah kita tetapkan di atas (lihat Gambar 8.6). Aturan penulisan nama
file di Java sangat ketat, sehingga jika kalian member nama file tidak sama dengan
nama kelasnya, maka program akan menolak untuk dieksekusi.
Pada kode program di atas, baris pertama menunjukkan nama class yaitu Main.
Pada Java semua kode seharusnya ditempatkan didalam deklarasi class. Kita
melakukannya dengan menggunakan kata kunci class. Sebagai tambahan, class
menggunakan akses khusus public, yang menunjukkan bahwa class kita mempunyai
akses bebas ke class yang lain dari package yang lain pula (package merupakan
kumpulan class-class).
Setelah deklarasi class kemudian diikuti tanda { yang menunjukkan awal blok
kode. Tanda ini harus ditutup dengan tanda } sebagai akhir blok.
Baris yang dimulai dengan tanda // adalah komentar. Kemudian baris
berikutnya adalah deklarasi nama method. Dalam hal ini nama method-nya adalah
main (method utama). Kita dapat membuat method-method lainnya diluar main ini.
Setelah deklarasi ini diikuti juga dengan blok kode. Pada blok kode berisi pernyataan

178 Pemrograman Berorientasi Obyek dengan Java


System.out.println("Hallo ini Java lho");. Perintah
System.out.println(), menampilkan teks yang diapit oleh tanda petik ganda (“ ”) pada
layar.

Gambar 8.6. Nama file dan lokasi penyimpanan.

Sekarang buka command prompt dan arahkan ke direktori tempat file java
kalian simpan dan ketikkan seperti pada Gambar 8.7. Perhatikan cara penulisan dan
hasil yang diperoleh.

Gambar 8.7. Cara eksekusi program dalam Java.

Sebelum dapat dieksekusi, maka kode program (Main.java) harus dikompilasi


dengan menggunakan perintah javac seperti terlihat di Gambar 8.7. Setelah
kompilasi berhasil, maka program dapat kita eksekusi dengan menggunakan perintah

Rekayasa Perangkat Lunak 179


java. Proses kompilasi akan menghasilkan file dengan nama Main.class (periksa
direktori kalian dengan perintah dir, dan cari file dengan akhiran .class). Yang kita
panggil pada perintah java adalah file dengan akhiran class ini dan bukan lagi kode
sumber yang berakhiran .java.

8.3. TIPE DATA, VARIABEL, DAN PERNYATAAN INPUT/OUTPUT (I/O)

8.3.1. Tipe Data


Ada 8 tipe data dasar pada Java yaitu boolean (untuk bentuk logika), char
(untuk bentuk tekstual), byte, short, int, long (integral), double and float (floating
point). Tabel 8.1 berikut menunjukkan penjelasan tentang tipe data tersebut.
Tabel 8.1. Tipe data pada Java.
Tipe Data Penjelasan
logika (boolean) diwakili oleh dua pernyataan : true dan false
tekstual (char) harus memiliki ciri berada dalam tanda single quotes(’ ’)
Integral (byte, short, Tipe data bilangan bulat, default tipe data yaitu int.
int & long) byte = 8 bits dengan range -27 s/d 27-1
short = 16 bits dengan range -215 s/d 215-1
int = 32 bits dengan range -231 s/d 231-1
long = 64 bits dengan range -263 s/d 263-1
Floating Point (float Tipe data bilangan asli (boleh ada pecahan). Default tipe
dan double) datanya adalah double.
float = 32 bits dengan range -231 s/d 231-1
double= 64 bits dengan range -263 s/d 263-1

Pada Java, String bukan merupakan tipe data primitif (namun merupakan suatu
Class). String mewakili tipe data yang terdiri atas beberapa karakter. String ditulis
dengan menggunakan tanda petik ganda (“”).
Contoh-contoh berikut menunjukkan bagaimana menggunakan tipe-tipe data di
atas. Ketikkan kode pada contoh-contoh berikut kemudian kompilasi dan jalankan.
Perhatikan output dari program.
Contoh 8.1. Penggunaan tipe data integral.
public class ContohPerhitungan {
public static void main(String[] args) {
byte a = 1;
short b = 12;
int c = 300, d, e;
d = a + b + c;
e = a * b * c;
System.out.println("Hasil penjumlahan = " + d);
System.out.println("Hasil perkalian = " + e);

180 Pemrograman Berorientasi Obyek dengan Java


}
}

Contoh 8.2. Penggunaan tipe data float.


public class LuasLingkaran {
public static void main(String[] args) {
double pi = 3.1416;
double r = 2.12;
double luas;
luas = pi * r * r;
System.out.println("Luas Lingkaran = " + luas);
}
}

Contoh 8.3. Penggunaan tipe data char.


public class tipeChar {
public static void main(String[] args) {
char ch = 'A';
System.out.println("ch = " + ch);
ch++;
System.out.println("ch = " + ch);
}
}

8.3.2. Variabel dan Konstanta


Aturan penamaan (identifier) variabel dan konstanta seperti terdapat pada Bab
5 juga berlaku pada Java. Selain itu penulisan identifier pada Java bersifat case-
sensitive. Artinya huruf besar dan huruf kecil dianggap suatu yang berbeda. Tidak
seperti pada VB, Java mensyaratkan kita mendeklarasikan variabel dan konstanta
lebih dulu. Kalau tidak maka kode program tidak akan dapat dikompilasi.
Cara pendeklarasian variabel adalah sebagai berikut:
<tipe data> <nama variabel> [=nilai awal];
Nilai awal bersifat opsional atau boleh dicantumkan atau tidak. Perhatikan
contoh 8.1 di atas. Variabel a, b, dan c telah ditentukan nilai awalnya. Sedangkan
variabel d dan e tidak ditentukan nilainya. Perhatikan juga contoh 8.2 dan 8.3 untuk
pendeklarasian variabel.

8.3.3. Input / Output


Pada contoh-contoh kode program di atas sebenarnya kita telah menggunakan
salah satu cara untuk menampilkan output ke layar, yaitu perintah
System.out.println, namun kita belum pernah menggunakan pernyataan untuk

Rekayasa Perangkat Lunak 181


mendapatkan input. Berikut ini kita akan pelajari bagaimana menggunakan
pernyataan input dan output pada Java.
Untuk dapat menangkap input dari keyboard, maka kita harus menggunakan
kelas BufferedReader yang berada di java.io package. Sehingga di awal program
kita harus mencantumkan kelas tersebut pada kode program. Perhatikan contoh
berikut.
Contoh 8.4. Pernyataan input pada Java.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class InputKeyboard


{
public static void main( String[] args ){
BufferedReader dataIn = new BufferedReader(new
InputStreamReader( System.in) );
String name = "";

System.out.print("Ketikkan nama anda:");

try{
name = dataIn.readLine();
}catch( IOException e ){
System.out.println("Error!");
}
System.out.println("Hai " + name +"!");
}
}

Tiga baris yang diawali dengan perintah import menunjukkan bahwa kita akan
menggunakan kelas BufferedReader, InputStreamReader dan IOException
yang berada di java.io package. Penjelasan tentang package akan kita bahas pada
bagian lain dari bab ini.
Pada statement,
BufferedReader dataIn = new BufferedReader(new
InputStreamReader( System.in) );
kita mendeklarasikan sebuah variabel bernama dataIn dengan tipe kelas
BufferedReader. Kemudian, kita mendeklarasikan variabel String dengan
identifier name. Pernyataan ini digunakan untuk menunjukkan tempat menyimpan
input dari pengguna. Variabel name diinisialisasi sebagai String kosong "". Baris
berikutnya adalah memberikan output string seperti yang telah kita pelajari dengan
menggunakan pernyataan System.out.print;
Sekarang, blok di bawah ini merupakan try-catch blok (kita akan bahas tentang
ini di sub bab exception)
182 Pemrograman Berorientasi Obyek dengan Java
try{
name = dataIn.readLine();
}catch( IOException e ){
System.out.println("Error!");
}
Pada baris ini menjelaskan bahwa kemungkinan terjadi error pada statement
name = dataIn.readLine(); akan ditangkap. Jika ada kesalahan maka tulisan
“Error” akan disampaikan. Jika tidak ada kesalahan maka variabel name akan diisi
dengan apa yang dimasukkan oleh pengguna melalui keyboard. Dan akan
ditampilkan pada pernyataan terakhir.
Untuk menampilkan output yang kita inginkan, dapat menggunakan perintah
sebagai berikut :
System.out.println()
System.out.print()
System.out.println()akan membuat baris baru sedangkan
System.out.print() tidak akan membuat baris baru.

8.4. OPERATOR

8.4.1. Operator Aritmatika


Operator aritmatika yang digunakan pada Java hampir sama dengan yang
digunakan pada VB. Hanya pada penggunaan operator modulus yang berbeda
notasinya. VB menggunakan mod sedangkan Java menggunakan tanda %. Tabel 8.2
menunjukkan operator aritmatika yang ada di Java.
Tabel 8.2. Operator aritmatika pada Java
Operator Fungsi Contoh
+ Penjumlahan 3+5=8
- Pengurangan 7–2=5
* Perkalian 5 * 2 = 10
/ Pembagian 6/3=2
% Sisa hasil bagi (modulus) 5/2=1
++ Menambahkan nilai 1 ke variabel C++ = C + 1
(increment)
-- Mengurangi nilai 1 ke variabel C-- = C - 1

Contoh berikut menunjukkan bagaimana menggunakan operator aritmatika.


Ketikkan kode pada contoh berikut kemudian kompilasi dan jalankan. Perhatikan
output dari program.

Rekayasa Perangkat Lunak 183


Contoh 8.4. Penggunaan operator aritmatika.
public class DemoAritmatika
{
public static void main(String[] args)
{
int i = 21;
int j = 38;
double x = 9.123;
double y = 12.78;
//Cetak nilai variabel
System.out.println("Nilai Variabel...");
System.out.println(" i = " + i);
System.out.println(" j = " + j);
System.out.println(" x = " + x);
System.out.println(" y = " + y);
//penjumlahan
System.out.println("Penjumlahan...");
System.out.println(" i + j = " + (i + j));
System.out.println(" x + y = " + (x + y));
//pengurangan
System.out.println("Pengurangan...");
System.out.println(" i - j = " + (i - j));
System.out.println(" x - y = " + (x - y));
//perkalian
System.out.println("Perkalian...");
System.out.println(" i * j = " + (i * j));
System.out.println(" x * y = " + (x * y));
//pembagian
System.out.println("Pembagian...");
System.out.println(" i / j = " + (i / j));
System.out.println(" x / y = " + (x / y));
//modulus
System.out.println("Sisa Hasil Bagi...");
System.out.println(" i % j = " + (i % j));
System.out.println(" x % y = " + (x % y));
//increment
System.out.println("Increment...");
System.out.println(" i++ = " + (i++));
System.out.println(" ++i = " + (++i));
System.out.println(" j++ + i = " + (j++ + i));
System.out.println(" ++j + i = " + (++j + i));
}
}

8.4.2. Operator Relasional


Operator relasional atau perbandingan pada Java juga mirip dengan VB. Hanya
berbeda pada perbandingan symbol sama dan tidak sama. Pada VB untuk
membandingkan dua buah operand apakah sama atau tidak menggunakan operator =
184 Pemrograman Berorientasi Obyek dengan Java
untuk sama dengan dan <> untuk tidak sama dengan. Sedangkan pada java
digunakan == untuk sama dengan dan != untuk tidak sama dengan. Ketikkan kode
pada contoh berikut kemudian kompilasi dan jalankan. Perhatikan output dari
program.
Contoh 8.5. Penggunaan operator relasional.
public class DemoRelasional
{
public static void main(String[] args) {
int i = 20;
int j = 16;
int k = 16;
//Cetak nilai variabel
System.out.println("Nilai variabel...");
System.out.println(" i = " + i);
System.out.println(" j = " + j);
System.out.println(" k = " + k);
//lebih besar dari
System.out.println("Lebih besar dari...");
System.out.println(" i > j = " + (i > j));
System.out.println(" j > i = " + (j > i));
System.out.println(" k > j = " + (k > j));
//lebih besar atau sama dengan
System.out.println("Lebih besar atau sama dengan...");
System.out.println(" i >= j = " + (i >= j));
System.out.println(" j >= i = " + (j >= i));
System.out.println(" k >= j = " + (k >= j));
//lebih kecil dari
System.out.println("Lebih kecil dari...");
System.out.println(" i < j = " + (i < j));
System.out.println(" j < i = " + (j < i));
System.out.println(" k < j = " + (k < j));
//lebih kecil atau sama dengan
System.out.println("Lebih kecil atau sama dengan...");
System.out.println(" i <= j = " + (i <= j));
System.out.println(" j <= i = " + (j <= i));
System.out.println(" k <= j = " + (k <= j));
//sama dengan
System.out.println("Sama dengan...");
System.out.println(" i == j = " + (i == j));
System.out.println(" k == j = " + (k == j));
//tidak sama dengan
System.out.println("Tidak sama dengan...");
System.out.println(" i != j = " + (i != j));
System.out.println(" k != j = " + (k != j));
}
}

Rekayasa Perangkat Lunak 185


8.4.3. Operator Logika
.Ada 3 operator logika yang disediakan Java yaitu: && (AND), || (logika OR), |
dan ! (logika NOT). Penggunaan operator ini sama persis dengan yang ada pada VB.
Hanya notasinya saja yang berbeda.

8.5. STRUKTUR KONTROL PROGRAM


Seperti halnya pada VB, pada Java juga menyediakan struktur kontrol program
untuk pemilihan maupun pengulangan. Perintah yang digunakan dalam struktur
kontrol ini juga hampir mirip.

8.5.1. Struktur Pemilihan


Struktur pemilihan dapat menggunakan if, if … else, dan if …else … if. Hal ini
tidak berbeda jauh dengan apa yang telah kalian pelajari pada Bab 5 dan Bab 7.
Perhatikan potongan kode-kode program berikut.
Contoh 8.6. Penggunaan if.
int nilai = 68;

if( nilai > 60 ) System.out.println("Selamat anda lulus!");

Contoh 8.6 ini hanya menggunakan if untuk membuat struktur pemilihan. Jika
nilai lebih dari 60 maka program akan menampilkan output “Selamat anda lulus!”
Contoh 8.7. Penggunaan if … else.
int nilai = 68;

if( nilai > 60 ) System.out.println("Selamat anda lulus!");


else System.out.println("Anda tidak lulus!");

Pada contoh 8.7, kita menggunakan struktur if … else. Jika nilai lebih dari 60
maka akan menampilkan output “Selamat anda lulus!” tetapi jika tidak (else) maka
program akan menampilkan output “Anda tidak lulus!”.
Contoh 8.8. Penggunaan if … else … if.
int nilai = 68;

if( nilai > 90 ){


System.out.println("Nilai anda sangat baik!");
}
else if( nilai > 60 ){
System.out.println("Nilai anda baik!");
}
else{

186 Pemrograman Berorientasi Obyek dengan Java


System.out.println("Anda tidak lulus");
}
Contoh 8.8 merupakan pengembangan dari contoh 8.7. Jika nilai lebih dari 90
maka program akan menampilkan output “Nilai anda sangat baik!”, tetapi jika kurang
dari 90 dan lebih dari 60 (else if) maka program akan menampilkan output “Nilai anda
baik!” dan jika tidak kedua-duanya (else) maka program akan menampilkan output
“Anda tidak lulus”
Struktur pemilihan juga memungkinkan kita untuk memilih banyak alternatif.
Namun jika menggunakan if akan sangat kompleks. Java menyediakan perintah
switch. Perintah ini sama fungsinya dengan Select .. case pada VB. Perhatikan
contoh berikut.
Contoh 8.9. Penggunaan switch.
public class SwitchControl {
public static void main(String[] args) {
int a=2;
int b;
switch(a) {
case 1:
b = a + 1;
break;
case 2:
b = a + 2;
break;
case 3:
b = a + 3;
break;
case 4:
b = a + 4;
break;
default: b = 0;
}
System.out.println("Nilai b: " + b);
}
}
Berapakah hasil dari kode program pada contoh 8.9 di atas. Kalau jawaban
kalian 4 berarti kalian telah memahami bagaimana cara kerja perintah switch. Switch
akan memeriksa apakah ada case yang memiliki nilai sama dengan a yaitu 2.
Pemeriksaan dimulai dari case pertama yaitu 1. Pernyataan break harus dituliskan
untuk menghentikan pencarian pada case berikutnya. Cobalah hilangkan pernyataan
break dan jalankan kode program di atas. Bagaimanakah hasilnya?

8.5.2. Struktur Pengulangan


Ada tiga bentuk struktur pengulangan pada Java yaitu for, while dan do-while.
Secara prinsip bentuk pengulangan ini sama dengan apa yang telah kalian pelajari
pada Bab 5 dan 7. Berikut ini contoh-contoh bentuk pengulangan.
Rekayasa Perangkat Lunak 187
Contoh 8.10. Penggunaan for pada Java.
public class ForLoop {
public static void main(String[] args) {
int j=4;
for (int x=0; x < 5; x++) {
System.out.println("Nilai x: " + x);
System.out.println("Nilai j: " + j);
System.out.println();
j--;
}
}
}
Sintaks umum for adalah : for (nilai awal; kondisi; increment)
kemudian dilanjutkan dengan bagian yang akan diulang. Perhatikan baik-baik
bagaimana menggunakan struktur for pada contoh 8.10 di atas. Nilai x=0 adalah nilai
awal. Sedangkan x < 5 adalah kondisi yang harus dipenuhi agar pengulangan bisa
dilakukan. Nilai x++ merupakan increment. Ingat bahwa penulisan x++ sama
artinya dengan x = x + 1. Cobalah jalankan kode program di atas. Menurut kalian
bagaimanakah keluaran dari program tersebut?
Contoh 8.11. Penggunaan while pada Java.
public class WhileLoop {
public static void main(String[] args) {
int y = 4;
while ( y > 0 ){
System.out.print(y);
y--;
}
}
}
Pada contoh 8.11 ini kita menggunakan while untuk membuat pengulangan.
Pada while kita perlu menginisialisasi variabel sebelum masuk ke bagian while.
Variabel y kita inisialisasi dengan nilai 4. Kondisi yang harus dipenuhi pada while
adalah y>0. Pada contoh ini counternya bersifat menurun (perhatikan bagian y--).
Sehingga yang akan tercetak dilayar adalah 4321. Bagaimanakah jika baris counter
(y--) kita hilangkan? Berapa kalikah pengulangan akan terjadi?
Contoh 8.12. Penggunaan do-while pada Java.
public class ContohDoWhile {
public static void main(String[] args) {
int z=3;
do {
System.out.println("Java");
z++;
} while (z < 6);
}
}

188 Pemrograman Berorientasi Obyek dengan Java


Contoh 8.12 menunjukkan bagaimana kita dapat menggunakan do-while untuk
mengulang pencetakan kata “Java”. Perhatikan dengan baik sintaks penulisan do-
while pada contoh ini. Do-while juga membutuhkan inisialisasi dan counter agar
pengulangan dapat dilakukan. Cobalah jalankan program di atas. Berapa kalikah
tulisan “Java” akan tampil? Sekarang gantilah kondisi pada while dengan z < 1.
Apakah kode program masih mencetak tulisan “Java”? Mengapa? Bacalah kembali
Bab 7 pada bagian struktur kontrol pengulangan untuk memahami hal ini.

8.5.3. Menggunakan Break dan Continue


Pernyataan break memiliki tiga fungsi yaitu:
• Menghentikan pemilihan pada pernyataan switch.
• Menghentikan proses pengulangan atau keluar dari badan loop.
• Keluar dari blok label tertentu.
Pemakaian break pada pernyataan switch sudah kita pelajari pada struktur
pemilihan. Kita akan pelajari sekarang bagaimana menggunakan break pada
pengulangan. Perhatikan contoh berikut.
Contoh 8.13. Penggunaan break pada pengulangan.
class BreakPengulangan {
public static void main(String[] args) {
for (int i=0; i<10; i++) {
if (i == 5) {
break;
}
System.out.println("baris ke-" + i);
}
System.out.println("Ini setelah break pengulangan”);
}
}
Pada contoh 8.13 seharusnya pengulangan akan terjadi sebanyak 10 kali
(dimulai dari 0 sampai dengan 9). Tetapi, karena ada pernyataan if (1 == 5)
{break;} maka pengulangan akan berhenti ketika nilai i =5. Kemudian alur
program akan keluar dari badan dan menjalankan perintah setelah tanda akhir
pengulangan.
Pernyataan continue digunakan untuk memaksa program untuk melanjutkan
proses pengulangan. Perhatikan contoh berikut.
Contoh 8.14. Penggunaan continue.
String nama[] = {"Joni", "Riko", "Denis", "Riko"};
int hitung = 0;
for( int i=0; i<names.length; i++ ){
if( !nama[i].equals("Riko") ){
continue;

Rekayasa Perangkat Lunak 189


}
hitung++;
}
System.out.println("Ada " + hitung + " Riko dalam daftar");
Contoh 8.14 adalah potongan program untuk mencari jumlah nama Riko di
dalam kumpulan nama. Pernyataan if(!names[i].equals(“Riko”) mempunyai
arti jika isi pada variabel nama bukan “Riko” maka jalankan perintah continue.
Peletakkan pernyataan continue ini memaksa program untuk mengulang langsung
tanpa harus menjalankan perintah di bawah continue. Artinya baris hitung++ tidak
akan dijalankan. Sehingga kalau kita eksekusi kode program di atas hasilnya adalah
2.

8.6. EXCEPTION HANDLING

8.6.1. Pengertian Exception Handling


Kesalahan dalam sebuah program sering kali muncul, meskipun program
tersebut dibuat oleh programmer berkemampuan tinggi. Untuk menghindari
pemborosan waktu pada proses pencarian kesalahan, Java menyediakan mekanisme
penanganan exception. Exception adalah singkatan dari Exceptional Events. Menurut
definisi umum, exception adalah kondisi abnormal yang terjadi saat runtime. Runtime
error atau kesalahan-kesalahan yang terjadi pada saat program berjalan diwujudkan
dan exception. Exception dapat dibangkitkan secara otomatis oleh sistem Java
runtime maupun sengaja kita buat melalui pernyataan tertentu untuk tujuan tertentu.
Perhatikan kode program berikut:
public class DivByZero {
public static void main(String args[]) {
int a = 5, b = 0, c;
c = a/b;

System.out.println("c = " + c);


}
}
Kode program di atas, secara sintaks tidak salah. Namun ada kesalahan yang
fatal yaitu ada pembagian dengan 0. Yaitu a = 5 dibagi b = 0. Kesalahan seperti ini
sering terjadi karena memang tidak kentara bila kita tidak cermat. Apabila kita
kompilasi kode program tersebut maka kompilasi akan berlangsung sukses. Namun
bila kita jalankan kita tidak akan mendapatkan hasil tetapi program akan
menampilkan pesan terjadinya exception atau kondisi tidak normal (Gambar 8.8) dan
program akan berhenti.

190 Pemrograman Berorientasi Obyek dengan Java


Gambar 8.8. Peringatan terjadinya kesalahan.

Pesan pada Gambar 8.8 tersebut menginformasikan tipe exception yang terjadi
pada baris dimana exception itu berasal. Inilah aksi default yang terjadi bila terjadi
exception yang tidak tertangani. Jika tidak terdapat kode yang menangani exception
yang terjadi, aksi default akan bekerja otomatis.
Beberapa tipe exception yang umum antara lain:
• ArithmeticException. Exception karena kesalahan yang ada hubungannya
dengan perhitungan, misalnya pembagian dengan 0.
• ArrayIndexOutOfBoundException. Exception karena membaca indeks array
diluar batas yang ditetapkan.
• NullPointerException. Kesalahan karena pointer yang tidak berisi (null)
• Dan lain-lain

8.6.2. Try dan Catch


Try digunakan untuk membuat blok yang berisi pernyataan-pernyataan yang
mungkin menimbulkan exception. Apabila dalam proses eksekusi pernyataan-
pernyataan pada blok tersebut terjadi exception maka exception akan dilempar ke
bagian blok penangkap exception yang dibuat dengan kata kunci catch. Perhatikan
contoh berikut in.
Contoh 8.15. Exception dengan try-catch.
public class DivByZero {
public static void main(String args[]) {
int a = 5, b = 0, c;

try {
c = a/b;
} catch (ArithmeticException exc) {
//Reaksi jika terjadi exception
System.out.println(exc);
}
System.out.println("Setelah exception");
}
}

Rekayasa Perangkat Lunak 191


Kode program pada contoh 8.15 ini adalah pengembangan dari kode program
sebelumnya. Pernyataan c = a/b merupakan pernyataan yang kita uji apakah
mengandung exception atau tidak. Jika terjadi exception maka exception akan
dilempar ke bagian catch. Exception yang kita periksa adalah ArithmeticException.
Reaksi yang muncul jika terjadi exception adalah menjalankan pernyataan
System.out.println(exc);. Dengan mekanisme seperti ini maka program
tidak akan dipaksa berhenti dan perintah setelah blok try-catch tetap bisa dijalankan.
Gambar 8.9. menunjukkan hasil eksekusi kode program di atas. Bandingkan dengan
Gambar 8.8.

Gambar 8.9. Output dari try-catch.

Umumnya exception pada satu masalah tidak hanya satu. Pada contoh 8.16
berikut ini, kita menggunakan beberapa tipe exception untuk memeriksa kemungkinan
terjadi exception. Ketik kode program berikut kemudian jalankan dan amati apa yang
terjadi.
Contoh 8.16. Exception dengan try-catch.
class BanyakEksepsi {
public static void test(int a, int b) {
try {
int c = a / b;
System.out.println("Hasil bagi: " + c);

int[] Arr = {1,2,3,4,5}; // array dengan 5 elemen


Arr[10] = 11; // mengakses indeks ke-10
} catch (ArithmeticException ae) {
System.out.println("Terdapat pembagian dengan 0");
System.out.println(ae);
} catch (ArrayIndexOutOfBoundsException oobe) {
System.out.println("Indeks di luar rentang");
System.out.println(oobe);
}
}

public static void main(String[] args) {

test(4, 0); // menimbulkan ArithmeticException


System.out.println();

192 Pemrograman Berorientasi Obyek dengan Java


test(12, 4); // menimbulkan ArrayIndexOutOfBoundsException
}
}

8.6.3. Throw
Disamping menangkap exception, Java juga mengijinkan seorang user untuk
melempar (throw) sebuah exception. Perhatikan contoh 8.17 berikut ini.
Contoh 8.17. Exception dengan try-catch dan throw.
class ThrowDemo {
public static void main(String args[]){
String input = "Salah input";
try {
if (input.equals("Salah input")) {
throw new RuntimeException("Demonstrasi
Throw");
} else {
System.out.println(input);
}
System.out.println("Setelah throw");
} catch (RuntimeException e) {
System.out.println("Exception ditangkap
di sini.");
System.out.println(e);
}
}
}
Perhatikan pada pernyataan yang dimulai dari perintah if. Kalau diartikan
pernyataan tersebut adalah jika nilai variabel input sama dengan “Salah input” maka
lemparkan exception dengan menampilkan “Demonstrasi Throw”. Output dari kode
program ini akan tampak seperti pada Gambar 8.10.

Gambar 8.10. Output program dengan throw.

8.6.4. Finally
Blok finally mengandung kode penanganan setelah penggunaan try dan catch.
Blok kode ini selalu tereksekusi apapun yang terjadi pada blok try. Blok kode tersebut
Rekayasa Perangkat Lunak 193
juga akan menghasilkan nilai true meskipun return, continue ataupun break
tereksekusi. Perhatikan kode program berikut.
Contoh 8.18. Exception dengan try-catch-finally.
class DemoFinally {
private static int i = 0;

public static void main(String[] args) {


while (true) {
try {
System.out.print("Pada saat i = " + i + ": ");
if (i++ == 0) {
throw new Exception(); // melempar exception
}
System.out.println("Tidak terjadi exception");
} catch (Exception e) {
System.out.println("Terdapat exception");
} finally {
System.out.println("Pernyataan dalam blok finally\n");
if (i == 2) {
break; // pada saat i==2, pengulangan akan berhenti
}
}
}
}
}
Bila kode program dijalankan maka akan tampak seperti pada Gambar 8.11.
Perhatikan bahwa apa yang ada pada blok kode finally akan selalu dijalankan.

Gambar 8.11. Output kode program try-catch-finally.

194 Pemrograman Berorientasi Obyek dengan Java


8.7. MULTI-THREADING

8.7.1. Pengertian Thread


Sebuah thread merupakan sebuah pengontrol aliran program. Untuk lebih
mudahnya, bayangkanlah thread sebagai sebuah proses yang akan dieksekusi di
dalam sebuah program tertentu. Thread adalah suatu bagian program yang tidak
tergantung pada bagian lain dan dapat dijalankan secara bersama-sama. Hal ini
berarti suatu thread dapat diberhentikan atau diistirahatkan tanpa harus
menghentikan yang lainnya. Pada Java setiap thread dikontrol oleh suatu obyek unik
turunan Thread, yang didefinisikan di dalam paket java.lang.
Pada saat sebuah program Java dijalankan, sebenarnya terdapat satu thread
yang secara otomatis dibuat. Thread ini biasa disebut sebagai thread utama. Thread
ini merupakan induk dari dari thread-thread yang lain. Meskipun thread utama ini
otomatis dijalankan tetapi kita dapat mengendalikannya melalui obyek Thread dengan
memanggil method currentThread(). Perhatikan contoh berikut.
Contoh 8.19. Thread utama.
class ThreadUtama {
public static void main(String[] args)
throws InterruptedException {

// mendapatkan thread yang sedang aktif


Thread tUtama = Thread.currentThread();

// menampilkan informasi tentang thread


System.out.print("Informasi thread: ");
System.out.println(tUtama.toString());

for (int i=0; i<5; i++) {


System.out.println("Detik ke-" + (i+1));
Thread.sleep(1000); // membuat delay selama 1 detik
}
}
}
Pada contoh di atas, kita mendefinisikan thread dengan nama tUtama.
Variabel ini kita gunakan untuk menangkap thread utama yang sedang berjalan pada
program dengan perintah Thread.currentThread(). Kemudian informasi
tentang thread ini kita tampilkan di layar. Pada baris yang dimulai dengan for, kita
akan menggunakan perintah untuk mengontrol thread yang sedang berjalan. Kita
menggunakan method sleep untuk mengontrol thread agar menunda pekerjaan
selama 1 detik tiap kali pengulangan. Cobalah ketik kode di atas, kemudian jalankan.
Kemudian coba hapus baris Thread.sleep(1000);. Jalankan lagi program. Apa
yang berbeda?

Rekayasa Perangkat Lunak 195


8.7.2. Pembuatan dan Penggunaan Thread
Thread dapat dibuat dengan dua cara yaitu dengan membuat kelas baru yang
menerapkan interface Runnable dan membuat kelas baru dengan menurunkan dari
kelas Thread. Kedua cara tersebut membutuhkan paket java.lang. Secara default
paket ini telah otomatis diimpor pada saat kita membuat program dengan Java.
Pada bagian ini kita hanya akan membahas cara pertama. Sedangkan cara
kedua akan kita pelajari secara bersamaan pada bagian multi-thread.
Perhatikan contoh berikut.
Contoh 8.20. Membuat thread dengan interface Runnable.
class TestRunnable implements Runnable {
// mengimplementasikan method run() yang dideklarasikan
// di dalam interface Runnable
public void run() {
System.out.println("Thread anak dieksekusi");
}
}

class PenerapanRunnable {
public static void main(String[] args) {

// (LANGKAH KE-1): membuat objek Runnable


TestRunnable obj = new TestRunnable();

// (LANGKAH KE-2): membuat objek Thread dengan melewatkan


objek Runnable
Thread t = new Thread(obj);

// (LANGKAH KE-3) : menjalankan thread


t.start();

System.out.println("Thread utama dieksekusi");


}
}
Pada contoh di atas kita membuat lebih dulu kelas TestRunnable yang
menerapkan Runnable (perhatikan baris class TestRunnable implements
Runnable dan blok kode dibawahnya). Kemudian kita membuat obyek TestRunnable
dari kelas tersebut (lihat pada baris TestRunnable obj = new TestRunnable()
). Obyek ini kita gunakan untuk membuat thread baru dengan cara menggunakan
constructor kelas thread (lihat baris Thread t = new Thread(obj) ). Setelah
terbentuk maka kita dapat menjalankan thread tersebut (lihat baris t.start() ).

196 Pemrograman Berorientasi Obyek dengan Java


8.7.3. Multi-Thread
Pada contoh 8.19 dan 8.20, kita hanya berhubungan dengan satu dan dua
thread. Namun sesungguhnya Java member kemungkinan untuk membuat lebih dari
dua thread. Kondisi ini dinamakan sebagai Multi-thread. Coba kalian perhatikan
contoh berikut ini.
Contoh 8.21. Membuat multi-thread.
class MyThread1 extends Thread {
public void run() {
try {
for (int i=0; i<10; i++) {
System.out.println("Thread pertama: detik ke-" +
(i+1));
if (i != 9) {
sleep(1000);
} else {
System.out.println("Thread pertama selesai...\n");
}
}
} catch (InterruptedException ie) {
System.out.println(ie.getMessage());
}
}
}

class MyThread2 extends Thread {


public void run() {
try {
for (int i=0; i<5; i++) {
System.out.println("Thread kedua: detik ke-" + (i+1));
if (i != 4) {
System.out.println();
sleep(1000);
} else {
System.out.println("Thread kedua selesai...\n");
}
}
} catch (InterruptedException ie) {
System.out.println(ie.getMessage());
}
}
}

class DemoMultipleThread {
public static void main(String[] args) {

MyThread1 t1 = new MyThread1();


t1.start();

Rekayasa Perangkat Lunak 197


MyThread2 t2 = new MyThread2();
t2.start();
}
}
Kode program di atas menunjukkan bagaimana membentuk dua buah thread.
Thread yang pertama kita buat melalui pembuatan kelas MyThread1 dengan cara
menurunkan kelas Thread. Cara ini adalah cara kedua membuat thread yang kita
singgung di bagian sebelumnya. Thread kedua dengan nama kelas MyThread2 juga
kita buat dengan cara yang sama. Kemudian pada class DemoMultipleThread kita
membuat obyek t1 dari kelas MyThread1 dan obyek t2 dari kelas MyThread2.
Apabila dijalankan, kode program di atas akan tampak seperti pada Gambar 8.12.

Gambar 8.12. Hasil eksekusi multi-thread.

8.8. APLIKASI PEMROGRAMAN BERORIENTASI OBYEK DENGAN JAVA


Pada contoh-contoh sebelumnya dan beberapa penjelasannya kita telah
menyinggung beberapa kali tentang class (kelas) dan object (obyek). Namun kita
belum mempelajari dengan jelas apa sebenarnya kelas dan obyek dalam Java. Kelas
dan obyek dalam Java adalah penerapan dari prinsip-prinsip pemrograman
berorientasi obyek yang telah kita pelajari di awal bab ini.
Kelas dapat didefinisikan sebagai kerangka yang mendefinisikan variabel-
variabel, method umum dari sebuah obyek tertentu. Pada pemrograman berorientasi
obyek, kelas tidak jauh berbeda dengan tipe data primitive. Perbedaannya, tipe data
digunakan untuk mendeklarasikan variabel normal, sedangkan kelas digunakan untuk
mendeklarasikan variabel yang berupa obyek. Kelas masih bersifat abstrak.

198 Pemrograman Berorientasi Obyek dengan Java


8.8.1. Pembuatan Kelas
Pada Java kelas didefinisikan dengan kata kunci class. Bentuk umum untuk
mendefinisikan kelas adalah sebagai berikut:
class NamaKelas
tipe data1;
tipe data2;

tipe dataN;

tipe method1 (daftar parameter) {


//blok kode untuk method1
}
tipe method2 (daftar parameter) {
//blok kode untuk method2
}

tipe methodN (daftar parameter) {
//blok kode untuk methodN
}
}
Data atau variabel yang didefinisikan di dalam kelas sering disebut sebagai
instance variable. Nilai-nilai variabel ini akan dibaca melalui method-method yang
tersedia. Dengan demikian method digunakan sebagai antarmuka (interface) antara
pemakai kelas dengan data yang ada di dalam kelas tersebut. Ingat kembali prinsip
encapsulation di awal bab. Perhatikan contoh kelas berikut.
Contoh 8.22. Membuat kelas sederhana.
class Siswa
{
String name;
String alamat;
int usia;
}
Pada kode di atas kita membuat class dengan nama Siswa. Ada tiga data yang
ada pada class tersebut yaitu nama, alamat dan usia. Kita belum menambahkan
method di sini. Melalui kode di atas sebenarnya kita telah mendefinisikan tipe data
baru yaitu Siswa. Kode program di atas hanyalah sebuah template. Artinya kalau
jalankan program di atas tidak akan menghasilkan apa-apa. Kita perlu membuat
obyek aktual berdasarkan kelas di atas. Dengan cara sebagai berikut.
Contoh 8.23. Menggunakan kelas.
class Siswa {
String nama;
String alamat;
int usia;

Rekayasa Perangkat Lunak 199


}

public class DataSiswa {


public static void main(String[] args) {
Siswa siswa1 = new Siswa();
siswa1.nama = "Roni";
siswa1.alamat = "Mergosono Gg. 1 No. 34";
siswa1.usia = 23;
System.out.println("Nama :" + siswa1.nama);
System.out.println("Alamat :" + siswa1.alamat);
System.out.println("Usia :" + siswa1.usia);
}
}
Kode program di atas harus kita simpan dengan nama file DataSiswa.java, buka
Siswa.java. Hal ini karena method main berada pada class DataSiswa. Pada kode di
atas kelas Siswa kita gunakan pada kelas DataSiswa. Kita membuat obyek aktual dari
kelas Siswa dengan cara mengetikkan Siswa siswa1 = new Siswa();. Siswa1
adalah nama obyek aktual dari kelas Siswa. Setelah itu baru kita dapat menggunakan
variabel atau data yang ada pada kelas siswa. Kalau dijalankan, kode program di atas
akan menghasilkan output seperti pada Gambar 8.13.

Gambar 8.13. Hasil eksekusi terhadap class DataSiswa.

Sekarang kita akan buat kelas menjadi sedikit lebih kompleks dengan
mengikutkan method pada kelas tersebut. Perhatikan contoh berikut.
Contoh 8.23. Pembuatan kelas yang mempunyai method.
class Siswa {
String nama;
String alamat;
int usia;
double nilaiMatematika;
double nilaiBhsInggris;
double nilaiBhsIndonesia;
double rerata;

// Menghasilkan nama dari Siswa


public String getNama(){
return nama;
200 Pemrograman Berorientasi Obyek dengan Java
}

// Mengubah nama siswa


public void setNama( String temp ){
nama = temp;
}

// Menghitung rata – rata nilai


public double getRerata(){
rerata = (
nilaiMatematika+nilaiBhsInggris+nilaiBhsIndonesia )/3;
return rerata;
}
}

public class DataSiswa {


public static void main(String[] args) {
Siswa siswa1 = new Siswa();
siswa1.setNama("Rony");
siswa1.nilaiMatematika = 67;
siswa1.nilaiBhsInggris = 87;
siswa1.nilaiBhsIndonesia = 59;

System.out.println("Nama :" + siswa1.getNama());


System.out.println("Nilai Matematika :" +
siswa1.nilaiMatematika);
System.out.println("Nilai Bahasa Inggris :" +
siswa1.nilaiBhsInggris);
System.out.println("Nilai Bahasa Indonesia :" +
siswa1.nilaiBhsIndonesia);
System.out.println("Rerata :" +
siswa1.getRerata());
}
}
Pada kode di atas kita memperluas kelas Siswa dengan menambahkan empat
variabel yaitu nilaiMatematika, nilaiBhsInggris, nilaiBhsIndonesia dan rerata. Kita juga
menambahkan tiga buah method yaitu getNama, setNama dan getRerata. getNama
merupakan method untuk menampilkan isi dari variabel nama. setNama adalah
method untuk memberi nilai pada variabel nama. getRerata adalah method untuk
menghitung rata-rata nilai dari tiga pelajaran dan menampilkan isi dari hasil
perhitungan. Perhatikan bagaimana method ini digunakan pada kelas DataSiswa.
Apabila dijalankan maka kita akan memperoleh output seperti pada Gambar 8.14.

Rekayasa Perangkat Lunak 201


Gambar 8.14. Eksekusi pada class yang mempunyai method.

Ada beberapa tipe method di dalam class, yaitu method yang tidak
mengembalikan nilai, method yang mengembalikan nilai dan method khusus yaitu
constructor. Secara umum method ini boleh kita samakan dengan prosedur atau
fungsi (lihat kembali Bab 6 dan 7). Perhatikan contoh-contoh berikut ini.
Contoh 8.24. Pembuatan method tanpa pengembalian nilai.
Class Bangun {
double panjang;
double lebar;

// Mendefinisikan method void (tidak mengembalikan nilai)


void cetakLuas() {
System.out.println(“Luas bangun = “ +
(panjang * lebar));
}
}

class pakaiBangun {
public static void main(String[] args) {
Bangun b1, b2;

// instansiasi objek
b1 = new Bangun();
b2 = new Bangun();

// mengisi data untuk objek b1


b1.panjang = 4;
b1.lebar = 3;

// mengisi data untuk objek b2


b2.panjang = 6;
b2.lebar = 5;

// memanggil method cetakLuas() untuk masing-masing objek


b1.cetakLuas();
b2.cetakLuas();
}
}

202 Pemrograman Berorientasi Obyek dengan Java


Pada kode di atas, class Bangun mempunyai satu method yaitu cetakLuas.
Method ini tidak mengembalikan nilai. Hasil akhir dari method ini akan tersimpan
pada method tersebut. Bandingkan dengan contoh berikut.
Contoh 8.25. Pembuatan method dengan pengembalian nilai.
Class Bangun {
double panjang;
double lebar;

// Mendefinisikan method yang mengembalikan nilai


double hitungLuas() {
double luas = panjang * lebar;
return luas;
}
}

class pakaiBangun {
public static void main(String[] args) {
Bangun b1, b2;

// instansiasi objek
b1 = new Bangun();
b2 = new Bangun();

// mengisi data untuk objek b1


b1.panjang = 4;
b1.lebar = 3;

// mengisi data untuk objek b2


b2.panjang = 6;
b2.lebar = 5;

// memanggil method hitungLuas() untuk masing-masing objek


System.out.println(“Luas b1 = “ + b1.hitungLuas());
System.out.println(“Luas b2 = “ + b2.hitungLuas());
}
}
Pada contoh 8.25 ini kita membuat metode hitungLuas yang mengembalikan
nilai. Perhatikan deklarasi method tidak lagi menggunakan void tetapi menggunakan
double yang merupakan tipe data nilai yang dikembalikan. Untuk mengembalikan
nilai digunakan kata kunci return. Perhatikan cara pemanggilan method dari contoh
8.24 dan 8.25, apa yang berbeda?
Method dapat juga memiliki argumen seperti halnya pada fungsi atau prosedur.
Perhatikan contoh berikut.

Rekayasa Perangkat Lunak 203


Contoh 8.26. Pembuatan method dengan argumen.
class Bangun {
double panjang;
double lebar;

// method dengan argumen


void isiData(double p, double l) {
panjang = p;
lebar = l;
}

// method yang mengembalikan nilai


double hitungLuas() {
double luas = panjang * lebar;
return luas;
}
}

class pakaiBangun {
public static void main(String[] args) {
Bangun b;

// instansiasi obyek
b = new Bangun();

// memanggil method isiData dan mengisi argumennya


b.isiData(6,8);

// memanggil method hitungLuas() untuk objek b


System.out.println("Luas b = " + b.hitungLuas());
}
}
Pada contoh 8.26 ini kita menambahkan satu method lagi pada class Bangun
yaitu isiData. Karena tidak mengembalikan nilai maka kita menggunakan void.
Method ini mempunyai dua buah argument yaitu p dan l yang digunakan untuk
menampung nilai yang akan kita masukkan. Perhatikan bagaimana kita
menggunakan method ini (lihat bagian b.isiData(6, 8) ).
Constructor yang merupakan method khusus, merupakan method yang
didefiniskan di dalam kela dan akan dipanggil secara otomatis setiap kali terjadi
pendefinisian (instansiasi) obyek. Biasanya constructor berfungsi untuk melakukan
inisialisasi nilai terhadap data-data yang terdapat pada kelas yang bersangkutan.
Nama method constructor harus sama dengan nama kelas itu sendiri. Constructor
tidak memiliki kembalian nilai dan tidak void. Perhatikan contoh berikut ini.

204 Pemrograman Berorientasi Obyek dengan Java


Contoh 8.27. Pembuatan class dengan constructor.
class Bangun {
double panjang;
double lebar;

// constructor dengan argumen


Bangun(double p, double l) {
panjang = p;
lebar = l;
}

// method yang mengembalikan nilai


double hitungLuas() {
double luas = panjang * lebar;
return luas;
}
}

class pakaiBangun {
public static void main(String[] args) {
Bangun b;

// instansiasi obyek
b = new Bangun();

// memanggil method isiData dan mengisi argumennya


b.isiData(6,8);

// memanggil method hitungLuas() untuk objek b


System.out.println("Luas b = " + b.hitungLuas());
}
}
Kode di atas sekilas sama dengan contoh 8.26, namun sebenarnya berbeda.
Pada kode ini terdapat constructor dengan nama yang sama dengan kelasnya yaitu
Bangun. Constructor seperti halnya method yang lain boleh mempunyai argumen dan
boleh tidak. Pada contoh di atas kita constructor Bangun mempunyai argumen p dan
l.

8.8.2. Penerapan Inheritance


Prinsip inheritance atau pewarisan, secara umum telah kalian pelajari di awal
bab. Pewarisan adalah keuntungan besar dalam pemrograman beorientasi obyek
karena suatu sifat atau method yang telah didefinisikan dalam superclass, secara
otomatis diwariskan dari pada semua subclasses. Jadi kita mungkin hanya perlu
mendefinisikan method satu kali di superclass kemudian dapat kita gunakan pada
subclass. Perhatikan contoh berikut.

Rekayasa Perangkat Lunak 205


Contoh 8.28. Penerapan inheritance.
class SuperA {
private int a;

public void setSuperA(int nilai) {


a = nilai;
}
public int getSuperA() {
return a;
}
}

// membuat kelas turunan (subclass) dari kelas A


class SubB extends SuperA {
private int b;

public void setSubB(int nilai) {


b = nilai;
}
public int getSubB() {
return b;
}
}

class DemoKelasTurunan1 {
public static void main(String[] args) {

// melakukan instansiasi terhadap kelas B


SubB ObyekB = new SubB();

// mengeset nilai objek dari kelas B


ObyekB.setSuperA(50);
ObyekB.setSubB(200);

// mendapatkan nilai yang terdapat dalam objek dari kelas B


System.out.println("Nilai a : " + Obyek.getSuperA());
System.out.println("Nilai b : " + Obyek.getSubB());
}
}
Pada kode di atas, class SuperA adalah super class yang memiliki satu data
yaitu a dan dan dua method yaitu setSuperA dan getSuperA. Class SubB adalah
turunan dari kelas SuperA (perhatikan deklarasi class SubB extends SuperA).
Data dan method yang ada pada class SuperA secara otomatis akan dibawa ke class
SubB. Sehingga class SubB akan mempunyai dua data yaitu a dan b. Data a adalah
hasil warisan dari class SuperA sedang data b adalah milik class SubB sendiri. Method
pada class SubB akan terdiri dari empat method, yaitu setSuperA dan getSuperA yang
merupakan warisan dari class SuperA serta class setSubB dan getSubB yang milik

206 Pemrograman Berorientasi Obyek dengan Java


class SubB sendiri. Cobalah ketik program di atas kemudian jalankan dan cermati
hasil yang diperoleh.
Perhatikan contoh yang lain berikut ini.
Contoh 8.29. Penerapan inheritance untuk menghitung luas dan volume.
class Bangun {
protected double panjang;
protected double lebar;

// constructor default
Bangun() {
panjang = lebar = 0;
}

Bangun(double p, double l) {
panjang = p;
lebar = l;
}

// method yang mengembalikan nilai


public double hitungLuas() {
double luas = panjang * lebar;
return luas;
}
}

class Box extends Bangun {


private double tinggi;

// constructor class Box


Box (int p, int l, int t) {
panjang = p;
lebar = l;
tinggi = t;
}

public double getTinggi() {


return tinggi;
}

public double hitungVolume() {


double volume = panjang * lebar * tinggi;
return volume;
}
}

class inheritBangun {
public static void main(String[] args) {
Box kotak;

Rekayasa Perangkat Lunak 207


// instansiasi obyek
kotak = new Box(6, 8, 3);

// memanggil method hitungLuas(), getTinggi() dan hitung


volume()
System.out.println("Luas salah satu sisi = " +
kotak.hitungLuas());
System.out.println("Tinggi kotak = " + kotak.getTinggi());
System.out.println("Volume kotak = " +
kotak.hitungVolume());
}
}
Kelas Bangun di atas adalah superclass sedangkan Box adalah subclass. Pada
default constructor Bangun, nilai panjang dan lebar diinisialisasi dengan nilai 0.
Perhatikan didepan deklarasi variabel panjang dan lebar pada kelas Bangun
dicantumkan kata kunci protected yang berarti kelas turunan dari Bangun tetap dapat
mengakses nilai dari variabel tersebut namun yang tidak memiliki hubungan turunan
tidak dapat mengaksesnya.
Pada Box yang merupakan subclass ditambahkan satu variabel yaitu tinggi
dengan tambahan kata kunci private diikuti tipe datanya. Private menunjukkan
bahwa variabel tinggi hanya bisa diakses didalam kelas Box. Lawan dari private
adalah public, yang berarti dapat diakses oleh siapapun dan dari manapun. Pada
kelas Box juga kita tambahkan satu method yaitu hitungVolume(). Pada contoh 8.29
di atas obyek yang kita buat yaitu kotak, merupakan hasil instansiasi dari kelas Box.
Oleh karena kelas Box adalah turunan dari kelas Bangun, maka kita dapat mengakses
method hitungLuas() yang merupakan warisan dari kelas Bangun. Tentu saja kita
bisa mengakses method getTinggi() dan hitungVolume() yang merupakan method
pada kelas Box. Kalau kita eksekusi program di atas, maka akan tampak seperti
berikut.

Gambar 8.15. Hasil eksekusi program kelas Bangun dan Box.

8.8.3. Penerapan Overriding dan Overloading


Kadang-kadang, ketika kita membuat method di dalam subclass, kita ingin
membuat method dengan nama yang sama dengan method pada superclass namun
dengan penerapan yang berbeda. Sebagai contoh pada kelas Bangun pada contoh

208 Pemrograman Berorientasi Obyek dengan Java


8.29, tersedia method hitungLuas(). Misalnya kita ingin membuat subclass Segitiga
yang merupakan turunan dari kelas Bangun. Kemudian kita ingin membuat method
hitungLuas() yang penerapannya tidak lagi luas = panjang x lebar tetapi dengan
penerapan luas = 0.5 x alas x tinggi. Pada kondisi ini method hitungLuas() dari
superclass akan tertutupi oleh method pada subclass. Hal seperti ini biasa disebut
sebagai overriding. Perhatikan contoh berikut.
Contoh 8.30. Penerapan overriding.
class Bangun {
// method umum
public double hitungLuas() {
System.out.println("Method belum terdefinisi");
Return 0;
}
}

class Segitiga extends Bangun {

private double alas;


private double tinggi;

Segitiga (int a, int t) {


alas = a;
tinggi = t;
}

// overriding method hitungLuas()


public double hitungLuas() {
double luas = 0.5 * alas * tinggi;
return luas;
}
}

class overridingBangun {
public static void main(String[] args) {
Segitiga s;

// instansiasi obyek
s = new Segitiga(6, 8);

// memanggil method hitungLuas() dari subclass Segitiga


System.out.println("Luas segitiga = " + s.hitungLuas());
}
}
Pada contoh di atas, kelas Bangun sebagai superclass mempunyai method
hitungLuas(), tetapi belum kita definisikan isi methodnya. Pada kelas Segitiga,
method hitungLuas() ini kita overriding untuk mendapatkan nilai luas segitiga. Pada
eksekusi program di atas, yang dijalankan adalah method hitungLuas() yang ada pada

Rekayasa Perangkat Lunak 209


subclass Segitiga. Hasil dari eksekusi program akan tampak seperti pada Gambar
8.16. Apabila kita ingin tetap menjalankan method hitungLuas() yang ada pada kelas
Bangun kita dapat memanggil dengan kata kunci super. Rubahlah method
hitungLuas() pada kelas Segitiga dengan kode berikut.
public double hitungLuas() {
super.hitungLuas();
System.out.println();
double luas = 0.5 * alas * tinggi;
return luas;
}
Jalankan program, maka kalian akan mendapatkan hasil seperti Gambar 8.17.
Bandingkan dengan hasil eksekusi sebelumnya (Gambar 8.16)

Gambar 8.16. Hasil eksekusi overriding pada method hitungLuas().

Gambar 8.17. Hasil eksekusi overriding dan pernyataan super.

Overloading memiliki kesamaan dengan overriding dalam hal menyembunyikan


method dari superclass. Tetapi memiliki perbedaan yaitu, pada overloading
methodnya memiliki nama yang sama dengan method pada kelas induk, tetapi
memiliki daftar argument dan implementasi yang berbeda. Sedangkan overriding,
method mempunyai nama dan daftar argumen yang sama dengan kelas induk dan
hanya implementasinya yang berbeda. Perhatikan contoh berikut.
Contoh 8.31. Contoh overloading.
class Bangun {
// method umum
public double hitungLuas() {
System.out.println("Method belum terdefinisi");
return 0;
}

210 Pemrograman Berorientasi Obyek dengan Java


}

class BujurSangkar extends Bangun {


private double sisi;

// overload method hitungLuas()


public double hitungLuas(double sisi) {
double luas = sisi * sisi;
return luas;
}
}

class overloadBangun {
public static void main(String[] args) {
BujurSangkar b;

// instansiasi obyek
b = new BujurSangkar();

// memanggil method hitungLuas() dari subclass BujurSangkar


System.out.println("Luas BujurSangkar = " +
b.hitungLuas(6));
}
}
Perhatikan pada kode di atas, method hitungLuas() pada kelas bangun tidak
mempunyai argumen sedangkan pada kelas BujurSangkar mempunyai argumen yaitu
sisi. Inilah yang disebut sebagai overloading. Bandingkan dengan contoh overriding
pada contoh 8.29 dan 8.30.

8.8.4. Penerapan Polymorphism


Seperti telah dijelaskan di awal bab, polymorphism adalah kemampuan sebuah
untuk menerjemahkan suatu method menjadi berbagai macam aksi. Sebenarnya
ketika kalian mempelajari overriding dan overloading di atas secara tidak langsung
kalian telah mempelajari dasar-dasar penyusun teori polymorphism. Polymorphism
membolehkan kelas induk (superclass) untuk mendefinisikan method umum untuk
semua turunannya. Kelas-kelas turunannya dapat mengimplementasikan method
tersebut sesuai dengan karakteristik masin-masing kelas.
Pada contoh 8.30 dan 8.31 kita telah membuat kelas Bangun yang merupakan
kelas induk yang mempunyai method hitungLuas(). Method ini bersifat umum. Pada
contoh 8.30, method ini kita implementasikan dengan untuk mencari nilai luas segitiga
pada kelas Segitiga. Sedangkan pada contoh 8.31, method ini kita implementasikan
untuk mencari luas BujurSangkar pada kelas BujurSangkar. Perhatikan contoh berikut
ini.

Rekayasa Perangkat Lunak 211


Contoh 8.32. Penerapan polymorphism.
class Bangun {
public double hitungLuas() {
System.out.println("Method umum");
return 0;
}
}

class BujurSangkar extends Bangun {


private double sisi;

BujurSangkar(int s) {
sisi = s;
}

//overriding method hitungLuas()


public double hitungLuas() {
double luas = sisi * sisi;
return luas;
}
}

class Segitiga extends Bangun {


private double alas;
private double tinggi;

Segitiga (int a, int t) {


alas = a;
tinggi = t;
}

// overriding method hitungLuas()


public double hitungLuas() {
double luas = 0.5 * alas * tinggi;
return luas;
}
}

class Lingkaran extends Bangun {


private double jarijari;
private final double PI = 3.1416;

Lingkaran(int r) {
jarijari = r;
}

//overriding method hitungLuas()


public double hitungLuas() {
double luas = PI * jarijari * jarijari;

212 Pemrograman Berorientasi Obyek dengan Java


return luas;
}
}

class DemoPolimorfisme2 {
public static void main(String[] args) {

Bentuk obyek;
BujurSangkar b = new BujurSangkar(12);
Segitiga s = new Segitiga(5, 6);
Lingkaran l = new Lingkaran(4);

// obyek mengacu pada objek BujurSangkar


obyek = b;
// akan memanggil method yang terdapat pada BujurSangkar
System.out.println(“Luas bujursangkar : “ +
obyek.hitungLuas());
System.out.println();

// obyek mengacu pada objek Segitiga


obyek = s;
// akan memanggil method yang terdapat pada Segitiga
System.out.println(“Luas segitiga : “ +
obyek.hitungLuas());
System.out.println();

// obyek mengacu pada objek Lingkaran


obyek = l;
// akan memanggil method yang terdapat pada Lingkaran
System.out.println(“Luas lingkaran: “ +
obyek.hitungLuas());
System.out.println();
}
}
Pada contoh 8.32 ini kita menggabungkan contoh-contoh sebelumnya untuk
menunjukkan bagaimana polymorphism terbentuk. Kelas induk adalah Bangun dan
mempunyai subclass yaitu BujurSangkar, Segitiga dan Lingkaran. Semuanya subclass
mempunyai method hitungLuas() yang diturunkan dari kelas Bangun. Perhatikan
bahwa meskipun nama method hitungLuas() ada pada semua subclass, ternyata
penerapannya berbeda-beda tergantung pada subclass masing-masing.

8.8.5. Menggunakan Paket dan Interface


Pada beberapa bagian di atas telah disinggung tentang package atau paket.
Packages dalam JAVA berarti pengelompokan beberapa class dan interface dalam satu
unit. Fitur ini menyediakan cara untuk mengatur class dan interface dalam jumlah
banyak dan menghindari kekacauan pada penamaan class dan file.

Rekayasa Perangkat Lunak 213


Kalau kalian cermati contoh 8.4 pada sub bab terdahulu, sebenarnya kalian
telah menggunakan konsep package ini secara tidak langsung. Pada contoh tersebut
kita menggunaka pernyataan import untuk menggunakan kelas-kelas yang ada pada
paket Java.IO. Java menyediakan banyak paket yang telah dibuat oleh tim
pengembang java. Paket-paket ini dapat kita gunakan untuk mempermudah
pemrograman
Cara membuat paket cukup mudah, kita tinggal menggunakan kata kunci
package diikuti dengan nama paket yang kita inginkan seperti berikut:
package NamaPaket;
NamaPaket adalah nama paket yang kita akan gunakan untuk menyimpan file
kode program dan file hasil kompilasi. Java menggunakan sistem direktori untuk
menyimpan paket yang dibuat. Apabila kita membuat paket dengan nama
PaketBangun, maka kita harus membuat direktori dengan nama yang sama persis
yaitu PaketBangun. Dan file paket dan kelas-kelas dalam satu paket tersebut harus
kita simpan pada direktori tersebut. Perhatikan contoh berikut.
Contoh 8.33. Pembuatan paket.
Pada bagian ini kita akan membuat paket yang merupakan modifikasi dari contoh
8.32. Nama paket yang ingin kita buat adalah PaketBangun yang mempunyai tiga
anggota kelas yaitu kelas BujurSangkar, Segitiga dan Lingkaran. Untuk tahap awal,
buatlah direktori dengan nama PaketBangun (pada contoh ini, direktori ini kita
letakkan di D:\TestCode\Java\PaketBangun ). Kemudian secara berturut-turut
buatlah kode program berikut dan simpan dengan nama sesuai nama kelasnya pada
direktori PaketBangun. Perhatikan pada awal kode kelas selalu diawali pernyataan
package PaketBangun;. Hal ini menunjukkan bahwa kelas tersebut merupakan
anggota dari PaketBangun.
File : BujurSangkar.java
package PaketBangun;
class BujurSangkar extends Bangun {
private double sisi;

public BujurSangkar(int s) {
sisi = s;
}
public double hitungLuas() {
double luas = sisi * sisi;
return luas;
}
}
File : Segitiga.java
package PaketBangun;
class Segitiga extends Bangun {
private double alas;
private double tinggi;

214 Pemrograman Berorientasi Obyek dengan Java


public Segitiga (int a, int t) {
alas = a;
tinggi = t;
}
public double hitungLuas() {
double luas = 0.5 * alas * tinggi;
return luas;
}
}
File : Lingkaran.java
package PaketBangun;
class Lingkaran extends Bangun {
private double jarijari;
private final double PI = 3.1416;

public Lingkaran(int r) {
jarijari = r;
}
public double hitungLuas() {
double luas = PI * jarijari * jarijari;
return luas;
}
}
Setelah itu lakukan pengaturan classpath seperti terlihat pada sub bab awal. Dan
lakukan kompilasi pada ketiga file tersebut di atas sehingga akan diperoleh hasil file
seperti Gambar 8.18.

Gambar 8.18. Kompilasi pada tiga file anggota paket.

Rekayasa Perangkat Lunak 215


Setelah kompilasi berhasil, buatlah file baru di direktori D:\TestCode\Java, misalnya
dengan nama PakaiPaketBangun.java. Kemudian ketikkan kode berikut ini pada file
tersebut. Kompilasi dan jalankan kode program tersebut.
//import seluruh kelas pada PaketBangun
import PaketBangun.*;

class PakaiPaketBangun {
public static void main(String[] args) {

BujurSangkar b = new BujurSangkar(12);


Segitiga s = new Segitiga(5, 6);
Lingkaran l = new Lingkaran(4);

System.out.println("Luas bujursangkar : " +


b.hitungLuas());
System.out.println();

System.out.println("Luas segitiga : " + s.hitungLuas());


System.out.println();

System.out.println("Luas lingkaran: " + l.hitungLuas());


System.out.println();
}
}
Perhatikan cara penulisan untuk memanggil paket. Jika kita hanya membutuhkan
kelas Lingkaran saja, maka perlu menuliskan import PaketBangun.Lingkaran;.
tetapi jika kita butuh semua kelas maka kita menuliskan dengan cara import
PaketBangun.*;. Jika kita jalankan perintah ini maka hasilnya akan sama persis
dengan contoh 8.33. Perbedaannya adalah pada contoh 8.32 kelas-kelas berada pada
satu file. Sedangkan pada contoh 8.33 kelas-kelas berada pada filenya masing-
masing dan baru dikelompokkan dengan menggunakan package.
Interface atau antar muka pada bahasa pemrograman Java sangat mirip
dengan kelas, tapi tanpa atribut kelas dan memiliki metode yang dideklarasikan tanpa
isi. Deklarasi metode pada sebuah interface dapat diimplementasikan oleh kelas lain.
Sebuah kelas dapat mengimplementasikan lebih dari satu interface. Metode pada
interface yang diimplementasikan pada suatu kelas harus sama persis dengan yang
ada pada interface. Interface digunakan jika kita ingin kelas yang tidak berhubungan
mengimplementasikan method yang sama. Perhatikan contoh berikut ini.
Contoh 8.34. Pembuatan interface.
interface Bentuk {
public double luas();
public double volume();
}

216 Pemrograman Berorientasi Obyek dengan Java


Pada contoh ini kita membuat sebuah interface dengan nama Bentuk yang
mempunyai dua method yaitu luas() dan volume(). Perhatikan penulisan interface.
Kedua method yang ada dideklarasikan tanpa isi. Kita dapat menggunakan interface
ini untuk membuat kelas baru dan mengimplementasikan interface ini dalam kelas
tersebut. Perhatikan contoh berikut ini.
Contoh 8.34. Penggunaan interface.
class Kubus implements Bentuk {

int x = 10;
public double luas( ) {
return (6 * x * x);
}

public double volume() {


return (x * x * x);
}

class Lingkaran implements Bentuk {

int radius = 10;


public double luas() {
return (Math.PI * radius * radius);
}
public double volume() {
return 0;
}
}

8.9. RINGKASAN
• Konsep penting harus pahami dalam pemrograman berorientasi yaitu, kelas,
obyek, abstraksi, enkapsulasi, inheritance dan polymorphism.
• Ada 8 tipe data dasar pada Java yaitu boolean (untuk bentuk logika), char
(untuk bentuk tekstual), byte, short, int, long (integral), double and float
(floating point).
• Operator yang tersedia pada Java adalah operator aritmatika, relasional,
logika dan bitwise.
• Struktur kontrol program untuk percabangan dapat dilakukan dengan
pernyataan if, if … else, dan if …else … if, sedangkan pengulangan dapat
dilakukan dengan for, while dan do-while.
• Exception adalah kondisi abnormal yang terjadi saat runtime. Java
menyediakan mekanisme try, throw, catch dan finally untuk menangani
exception.

Rekayasa Perangkat Lunak 217


• Thread adalah suatu bagian program yang tidak tergantung pada bagian lain
dan dapat dijalankan secara bersama-sama. Java membolehkan kita untuk
mengatur thread sesuai dengan kebutuhan.
• Java mendukung penuh konsep kelas, inheritance, overriding, overloading,
dan polymorphism.
• Paket adalah kumpulan dari kelas-kelas. Sedangkan interface adalah kelas
tanpa atribut dan mempunyai method yang dideklarasikan tanpa isi.

8.10. SOAL-SOAL LATIHAN


1. Buatlah program untuk menampilkan nilai dari beberapa variabel yang
mempunyai tipe data dan nilai awal sebagai berikut:
a. Tipe data float, nilai awal = 3.45.
b. Tipe data char, nilai awal = B
c. Tipe data int, nilai awal = 23
2. Buatlah program untuk menghitung nilai rata-rata dari tiga variabel berikut :
number1 = 56.3, number2 = 12 dan number3 = 2.78.
3. Dengan menggunakan variabel pada no 2, buatlah program untuk mencari
nilai terkecil dari ketiga variabel tersebut.
4. Ambil tiga nilai ujian dari user dan hitung nilai rata-rata dari nilai tersebut.
Berikan pernyataan “Selamat” pada output jika nilai rata-rata lebih besar atau
sama dengan 60, selain itu beri output. Gunakan BufferedReader untuk
mendapat input dari user, dan System.out untuk output hasilnya.
5. Buat sebuah program yang mencetak nama kalian selama seratus kali. Buat
tiga versi program ini menggunakan while loop, do while dan for-loop.
6. Dengan menggunakan kelas, buatlah program tentang kelas staf sekolah.
Kelas ini adalah superclass yang mempunyai subclass guru dan tenaga
administrasi.
- Kelas staf sekolah mempunyai variabel nama, alamat, jumlah anak,
tanggal awal bekerja dan pangkat. Selain itu juga punya method lama
bekerja (diperoleh dari tanggal saat ini dikurangi tanggal awal bekerja)
dan method hitung gaji pokok. Gaji pokok diperoleh dari nilai gaji dasar
ditambah tunjangan lama, tunjangan pangkat bekerja dan tunjangan
anak. Selain itu mempunyai method hitung gaji total yang belum
didefinisikan.
- Kelas guru, selain variabel dan method pada superclassnya, juga
mempunyai variabel bidang keahlian dan method hitung tunjangan
mengajar yang diperoleh dari banyaknya jam mengajar dikali upah per
jam mengajar. Definisikan method hitung gaji total sebagai penjumlahan
gaji pokok dengan tunjangan mengajar.

218 Pemrograman Berorientasi Obyek dengan Java


- Kelas tenaga administrasi, selain variabel dan method pada
superclassnya, juga mempunyai variabel jam kerja seminggu dan method
hitung upah lembur. Upah lembur dihitung jika seorang tenaga
administrasi bekerja lebih dari 40 jam perminggu. Kelebihannya adalah
jam lembur. Upah lembur = jumlah jam lembur dikali dengan upah per
jam lembur. Definisikan method hitung gaji total sebagai penjumlahan
gaji pokok dengan upah lembur.

Rekayasa Perangkat Lunak 219


220 Pemrograman Berorientasi Obyek dengan Java
Gambar 9.1 di samping ini mungkin
menimbulkan pertanyaan. Apa
hubungannya dengan judul bab di atas?
Tapi tahukah anda bahwa pesawat luar
angkasa seperti pada Gambar 9.1
dikendalikan oleh seperangkat komputer
canggih yang sebagian aplikasi
pengendalinya ditulis dengan bahasa
pemrograman C++.
Standar kompetensi program aplikasi
menggunakan C++ terdiri atas lima
kompetensi dasar. Dalam penyajian pada
buku ini, setiap kompetensi dasar memuat
tujuan, uraian materi, dan latihan.
Rangkuman diletakkan pada akhir bab.
Kompetensi dasar pada bab ini adalah
dasar-dasar pemrograman C++,
menerapkan fungsi, menerapkan pointer,
(Sumber: Clip Art Microsoft Office 2007) menerapkan konsep Class, dan merancang
aplikasi berorientasi Obyek. Sebelum
Gambar 9.1. Pesawat Luar Angkasa. mempelajari kompetensi ini ingatlah
kembali sistem operasi, algoritma
pemrograman dasar, algoritma pemrograman lanjutan dan konsep-konsep
pemrograman berorientasi obyek pada bab-bab sebelumnya.
Pada bagian akhir, tercantum soal-soal latihan yang disusun dari soal-soal yang
mudah hingga soal-soal yang sulit. Latihan soal ini digunakan untuk mengukur
kemampuan terhadap kompetensi dasar yang ada pada bab ini. Untuk melancarkan
kemampuan agar lebih baik dalam mengerjakan soal, disarankan semua soal dalam
latihan ini dapat dikerjakan di sekolah dengan bimbingan guru maupun di rumah.

Rekayasa Perangkat Lunak 221


TUJUAN
Setelah mempelajari bab ini diharapkan pembaca akan mampu :
o Menjelaskan dasar-dasar pemrograman C++
o Menerapkan fungsi
o Menerapkan pointer
o Menerapkan konsep kelas
o Merancang aplikasi berorientasi obyek

9.1 DASAR-DASAR PEMROGRAMAN C++


Bahasa C++ merupakan bahasa yang sangat populer di dunia pengembangan
perangkat lunak. Seperti halnya pendahulunya yaitu Bahasa C, C++ juga dimasukkan
dalam kelompok bahasa tingkat menengah (middle level language). Tujuan utama
pembuatan C++ adalah untuk meningkatkan produktivitas pemrogram dalam
membuat aplikasi. Keistimewaan C++ adalah karena bahasa ini telah mendukung
OOP (Object Oriented Programming). Selain itu juga tersedia banyak pustaka
(library) yang dapat kita gunakan untuk mempercepat pembuatan aplikasi. Pustaka
ini sebagian tersedia gratis di beberapa situs internet.
Kode program dalam bahasa C++ yang kita buat tidak dapat langsung
dieksekusi namun harus dikompilasi lebih dahulu dengan compiler C++ yang sesuai.
Konsep kompilasi dan eksekusi program pada C++ dapat digambarkan seperti pada
Gambar 9.2. Kode program yang kita buat disebut sebagai kode sumber dan
merupakan file teks biasa dengan nama file yang berekstensi .cpp. Kode program ini
kemudian dimasukkan ke PreProcessor. Keluaran dari PreProcessor ini adalah file
yang akan dimasukkan ke dalam Compiler. Compiler akan menerjemahkan kode
program dalam file tersebut menjadi bahasa assembly. Kode program program ini
kemudian diproses oleh Assembler menjadi kode obyek. Jika tidak ada file pustaka
(library) yang terlibat, maka kode obyek ini akan langsung dieksekusi menjadi file.
Jika ada pustaka lain yang terlibat maka Link Editor akan mengkombinasikan kode
obyek dan pustaka untuk membentuk file EXE.
Kita dapat mengetikkan kode-kode C++ dengan sebarang teks editor, seperti
Notepad, Vi, atau yang lainnya. Namun akan lebih mudah jika kita menggunakan
perangkat IDE (Integrated Development Environment) yang menyediakan secara
terintegrasi teks editor dan compiler C++. Beberapa IDE yang cukup terkenal antara
lain Microsoft Visual Studio, Borland C++, MingGW Developer Studio, dan lain-lain.
Pada buku ini sebagian besar code ditulis dan dijalankan dengan menggunakan
MingGW Developer Studio (Gambar 9.3). Lisensi IDE ini free, artinya kita bisa
menggunakan tanpa diributkan dengan masalah lisensi dari perangkat lunak. Kalian
dapat mendownload IDE ini dari alamat internet http://www.parinya.ca/.

222 Pemrograman Aplikasi dengan C++


Gambar 9.2. Proses kompilasi pada C++

Gambar 9.3. MingGW Developer Studio

Rekayasa Perangkat Lunak 223


9.1.1. Kerangka Program C++
Perhatikan kode program di
#include <iostream>
samping ini. Kode program terdiri dari
using namespace std; beberapa bagian seperti berikut:
- Bagian untuk mendaftarkan file
void nama_fungsi() { atau kondisi tertentu. Bagian ini
//kode untuk nama_fungsi selalu diawali dengan tanda #.
.....;
} - Bagian pendefinisian fungsi.
Diawali dengan kata kunci void
// Fungsi utama diikuti nama fungsi. Bagian ini
int main() { boleh tidak ada jika kita tidak
membuat fungsi.
// kode bagian main/utama
.....; - Bagian main(). Pada kode
program biasanya dimulai dengan
return 0; int main(). Bagian ini harus ada
} pada setiap program karena
merupakan fungsi utama.
- Bagian yang dimulai dengan tanda { dan diakhiri dengan tanda }, baik pada
bagian void maupun main, disebut blok kode.

9.1.2. Header File (.h)


File header yaitu file dengan ekstensi .h merupakan file yang berisi fungsi-
fungsi dan telah dikompilasi sebelumnya. File ini biasanya berisi fungsi-fungsi
tertentu yang nantinya akan kita gunakan dalam kode program yang kita buat.
Sebagai contoh file iostream.h mempunyai sejumlah fungsi untuk menampilkan
output dan menangkap input seperti cout dan cin.
Ada dua model penulisan file header, yaitu dengan dituliskan lengkap dengan
ekstensinya dan tidak. Bentuk pertama adalah model penulisan untuk compiler C++
lama (Contoh 9.1). Bentuk kedua merupakan bentuk yang didukung oleh Compiler
C++ standar (Contoh 9.2).
Contoh 9.1. Penulisan file header pada Compiler C++ lama.
#include <iostream.h>
Int main() {
...
return 0;
}
Contoh 9.2. Penulisan file header pada Compiler C++ standar.
#include <iostream>
using namespace std;
Int main() {
...

224 Pemrograman Aplikasi dengan C++


return 0;
}

9.1.3. Komentar, Identifier dan Tipe Data


• Komentar
Komentar pada C++ dapat dilakukan dengan dua cara, yaitu pertama,
dengan tanda // dan diletakkan sebelum komentar dan kedua dengan tanda /*
yang ditutup dengan */. Cara pertama digunakan jika komentar hanya terdiri dari
satu baris, sedangkan cara kedua jika komentar lebih dari satu baris.
Contoh 9.3. Komentar dengan tanda //.
// program pertama
#include <iostream>
int main( ){
cout << "Hello World"; // cetak “Hello World” di layar
}
Contoh 9.4. Komentar dengan tanda /* .. */..
/* Program pertama
Ditulis oleh ARM
Tanggal 17-11-2007 */
#include <iostream>
int main( ){
std::cout << "Hello World"; // cetak “Hello World” di layar
}
• Identifier
Identifier atau nama dari variabel atau konstanta pada C++ secara umum
sama mengikuti aturan umum penamaan yang telah dijelaskan pada Bab 5. Ada
satu tambahan yang cukup penting dalam pembuatan identifier pada C++ yaitu,
bersifat case sensitif. Variabel dengan nama namaguru berbeda dengan variabel
NamaGuru.
Ada dua cara untuk mendeklarasikan konstanta. Pertama, dengan
menggunakan preprocessor directive #define. Kedua, dengan menggunakan kata
kunci const. Ketiklah program berikut ini, kemudian periksalah hasil dari
eksekusinya.
Contoh 9.5. Pendeklarasian konstanta.
#include <iostream>
#define potongan 0.1;
using namespace std;

int main() {
const float hargaPerUnit = 2500;
int jumlahUnit;

Rekayasa Perangkat Lunak 225


float hargaTotal, hargaDiskon, diskon;
cout << "Masukkan jumlah unit pembelian : ";
cin >> jumlahUnit;
hargaTotal = jumlahUnit * hargaPerUnit;
diskon = hargaTotal * potongan;
hargaDiskon = hargaTotal - diskon;
cout << "Total harga pembelian = " << hargaTotal << endl;
cout << "Diskon = " << diskon << endl;
cout << "Harga Diskon = " << hargaDiskon;
return 0;
}
Pada contoh di atas, terdapat dua konstanta yaitu potongan dan
hargaPerUnit yang masing-masing dideklarasikan dengan cara berbeda.
Deklarasi variabel dilakukan dengan cara menyebutkan lebih dahulu tipe
datanya kemudian diikuti dengan nama variabelnya seperti pada contoh 9.5. Pada
contoh tersebut ada beberapa variabel yang telah didefinisikan lebih dahulu yaitu
jumlahUnit, hargaTotal, hargaDiskon dan diskon. Masing-masing dengan tipe
datanya sendiri. Untuk beberapa variabel yang tipe datanya sama, kita dapat
menggabungkan dalam satu baris dengan tanda pemisah koma. Perhatikan pada
contoh di atas. hargaTotal, hargaDiskon dan diskon sama-sama mempunyai tipe
data float sehingga penulisannya digabung.
Kalian harus mendeklarasikan dengan lengkap seluruh variabel atau
konstanta yang akan dipakai lebih dahulu sebelum menggunakan. Kalau tidak
maka program tidak akan dapat dieksekusi.

• Tipe data
Seperti telah dijelaskan pada Bab 5, tipe data tergantung dari yang
disediakan oleh bahasa pemrograman. Pada C++ tipe data dasar yang disediakan
dapat dilihat pada tabel berikut. Kalau kalian perhatikan tipe-tipe ini sama persis
dengan Java. Hal ini karena Java sebenarnya banyak mengambil elemen-elemen
bahasa pemrograman dari C++.
Tabel 9.1. Tipe data pada C++.
Tipe Data Keterangan
int Tipe data bilangan bulat dengan ukuran 4 bytes
long Tipe data bilangan bulat namun lebih besar dari int.
float Tipe data bilangan pecahan
double Tipe data bilangan pecahan namun lebih besar dari float
char Tipe data karakter yang berisi huruf, angka atau simbol-simbol
(alphanumeric) sepanjang berada pada tanda “ “ atau ‘ ‘.
bool Tipe data boolean
short Tipe data bilangan bulat dengan ukuran 2 bytes

226 Pemrograman Aplikasi dengan C++


Tipe data bentukan yang tersedia pada C++ adalah array, struct dan enum.
Array akan kita bahas pada bagian lain di bab ini. Sedangkan struct dan enum
telah kita singgung di Bab 5. Namun begitu cara penulisannya belum kita ulas.
Cobalah ketikkan kode-kode program pada contoh berikut ini kemudian eksekusi
untuk melihat hasilnya.
Contoh 9.6. Penggunaan tipe data struct.
#include <iostream>
using namespace std;

int main() {

struct Guru {
char* NIP;
char* Nama;
char* Alamat;
};

Guru A;

A.NIP = "132 232 477";


A.Nama = "Syafiq";
A.Alamat = "Perum. Dirgantara Permai";

// Menampilkan nilai yang diisikan ke layar


cout<<A.NIP<<endl;
cout<<A.Nama<<endl;
cout<<A.Alamat<<endl;

return 0;
}
Contoh 9.6. Penggunaan tipe data enum.
#include <iostream>
using namespace std;

enum JENIS_KELAMIN { Pria, Wanita };


int main() {

struct Guru {
char* NIP;
char* Nama;
JENIS_KELAMIN JK;
} A;

A.NIP = "132 232 477";


A.Nama = "Syafiq";
A.JK = Pria;

Rekayasa Perangkat Lunak 227


cout<<"NIP : "<<A.NIS<<endl;
cout<<"Nama : "<<A.Nama<<endl;
cout<<"Jenis Kelamin : "<<A.JK<<endl;

return 0;
}

9.1.4. Operator
Seperti halnya pada VB dan Java yang telah anda pelajari, C++ juga
menyediakan banyak operator yang dapat kita gunakan untuk membantu
memecahkan masalah tertentu. Secara umum banyak kemiripan antara Java dengan
C++ dalam penyediaan operator. Operator-operator yang tersedia pada C++ dapat
dilihat pada Tabel 9.2.
Tabel 9.2. Operator pada C++.
Jenis Operator Fungsi Contoh
Operator assignment
= Memasukkan (assign) nilai ke dalam C=5
suatu variabel
Operator unary
+ Membuat nilai positif X = +10
- Membuat nilai negatif Y = -12
++ Menaikkan nilai variabel satu nilai ++C (pre-increment)
C++ (post-increment)
-- Menurunkan nilai variabel satu nilai --C (pre-increment)
C-- (post-increment)
Operator Binary
+ Penjumlahan 3 +5=8
- Pengurangan 7 –2=5
* Perkalian 5 * 2 = 10
/ Pembagian 6 /3=2
% Sisa hasil bagi (modulus) 5 /2=1
Operator Logika
&& AND 1 && 1 = 1
|| OR 1 || 0 = 1
! NOT !0 = 1
Operator Relasional
> Lebih besar (5 > 4) = 1
< Lebih kecil (5 < 4) = 0
>= Lebih besar atau sama dengan (4 >= 4) = 1
<= Lebih kecil atau sama dengan (5 <= 4) = 0
== Sama dengan (5 ==4) = 0
!= Tidak sama dengan (5 != 4) = 1

228 Pemrograman Aplikasi dengan C++


Operator Bitwise
& AND 1&0=0
| OR 1|0=1
^ XOR 1^1=0
~ NOT ~0 = 1
Operator Ternary
?: Digunakan jika melibatkan tiga
operand

9.1.5. Struktur Kontrol Program


Struktur kontrol program pada C++ secara umum sama dengan VB dan Java
yang telah kalian pelajari. Yang berbeda adalah sintaks penulisannya. Untuk
percabangan, C++ menyediakan perintah if (tanpa then) dan switch ... case.
Sedangkan untuk pengulangan, C++ menyediakan perintah for, while, dan do-while.
Selain itu, pada pengulangan juga menyediakan fasilitas break dan continue. Secara
berurutan berikut ini akan disampaikan kode-kode program untuk menerapkan
struktur kendali. Ketikkan kode-kode tersebut, kemudian jalankan dan amati apa
yang terjadi.
Contoh 9.7. Penggunaan struktur percabangan if sederhana.
#include <iostream>
using namespace std;

int main() {
int bil;

cout<<"Masukkan sebuah bilangan bulat : ";


cin>>bil;

// Melakukan pengecekan bilangan dengan operator modulus


if (bil % 2 == 0) {
cout<<bil<<" adalah bilangan genap" << endl;
} else {
cout<<bil<<" adalah bilangan ganjil" << endl;
}

return 0;
}
Pada contoh di atas kita menggunakan if untuk memeriksa apakah suatu
bilangan genap atau ganjil. Operator yang kita gunakan adalah modulus (%).
Perhatikan cara penulisan struktur if dan else.
Contoh 9.8. Penggunaan struktur percabangan if tiga kondisi.
#include <iostream>
using namespace std;

Rekayasa Perangkat Lunak 229


int main() {
int bil;

cout<<"Masukkan sebuah bilangan bulat : ";


cin>>bil;

if (bil > 0) {
cout<<bil<<" adalah bilangan POSITIF";
} else if (bil < 0) {
cout<<bil<<" adalah bilangan NEGATIF";
} else {
cout<<"ini bilangan NOL";
}

return 0;
}
Contoh 9.8. merupakan pengembangan dari Contoh 9.7. Struktur pemilihan
dikembangkan menjadi tiga kondisi dengan menambahkan else. Apabila pemilihan
lebih dari tiga kondisi atau banyak, C++ menyediakan perintah switch … case untuk
memudahkan proses pemilihan. Perhatikan contoh berikut.
Contoh 9.9. Penggunaan struktur percabangan dengan switch ... case.
#include <iostream>
using namespace std;

int main() {
int bil;

cout<<"Masukkan sebuah bilangan (1 s/d 5) : ";


cin>>bil;

switch (bil) {
case 1 : cout<<"Bilangan anda adalah : SATU";
break;
case 2 : cout<<"Bilangan anda adalah : DUA";
break;
case 3 : cout<<"Bilangan anda adalah : TIGA";
break;
case 4 : cout<<"Bilangan anda adalah : EMPAT";
break;
case 5 : cout<<"Bilangan anda adalah : LIMA";
break;
default : cout<<"Anda memasukkan di luar batas";
}

return 0;
}

230 Pemrograman Aplikasi dengan C++


Contoh 9.9. adalah contoh percabangan dengan switch untuk konversi dari
bilangan angka ke teks. Perhatikan bagaimana penulisan switch dan case.
Seperti juga pada Java, pengulangan dengan for digunakan jika kita
mengetahui dengan pasti berapa banyak pengulangan akan dilakukan. Berikut contoh
penggunaan pengulangan dengan for.
Contoh 9.10. Penggunaan struktur pengulangan dengan for.
#include <iostream>
using namespace std;

int main() {
int C, J;
cout<<"Cetak angka dari kecil ke besar :"<<endl;
for (C=0; C<10; C+3) {
cout<<C+1<<endl;
}

cout<<endl;
cout<<"Cetak angka dari besar ke kecil"<<endl;
for (J=10; J>0; J--) {
cout<<J<<endl;
}

return 0;
}
Contoh 9.10. merupakan contoh penggunaan for untuk kasus sederhana. Ada
dua pengulangan for di atas, yaitu mencetak angka dari 1 sampai dengan 10 dan dari
10 sampai dengan 1. Perhatikan penggunaan increment ++ dan --. Cara penulisan
di atas sangat mirip dengan penulisan pada Java yang telah kalian pelajari
sebelumnya. Pada contoh 9.11 berikut ini, pengulangan for dikembangkan menjadi
sedikit lebih rumit dengan menerapkan for bersarang.
Contoh 9.11. Penggunaan struktur pengulangan dengan for bersarang.
#include <iostream>
using namespace std;

int main() {
for (int j=1; j<=4; j++) {
for (int k=1; k<=3; k++) {
cout<<k+j<<' ';
}
cout<<endl;
}

return 0;
}

Rekayasa Perangkat Lunak 231


Ada dua pengulangan pada contoh 9.11. Yang pertama dengan menggunakan
j sebagai variabel counter. Sedangkan yang kedua dengan variabel counter k yang
bersarang di dalam pengulangan j. Menurut kalian, bagaimanakah output dari kode
program di atas?
Penggunaan while pada pengulangan, tidak berbeda jauh dengan apa yang
telah kalian pelajari pada Java maupun VB. Perhatikan contoh 9.12 dan 9.13 berikut
ini.
Contoh 9.12. Penggunaan struktur pengulangan dengan while sederhana.
#include <iostream>
using namespace std;

int main() {
int C;
C = 1; // inisialisasi nilai C

while (C<10) {
cout<<"Saya tidak nakal lagi"<<endl;
C++; // increment
}

return 0;
}

Contoh 9.13. Penggunaan struktur pengulangan dengan while bersarang.


#include <iostream>
using namespace std;

int main() {
int x, y;
x = 1; //inisialisasi variabel x

while (x<=4){
y = 1; //inisialisasi variabel y
while (y<=3){
cout<<y+x<<' ';
y++;
}
cout<<endl;
x++;
}

return 0;
}
Perhatikan contoh 9.12 di atas, bagaimanakah menurut kalian output dari kode
program tersebut. Coba bandingkan dengan contoh 9.11. Cobalah memindahkan

232 Pemrograman Aplikasi dengan C++


inisialisasi untuk variabel y. Letakkan setelah inisialisasi variabel x. Bagaimanakah
hasilnya?
Bentuk berikutnya dari pengulangan pada C++ adalah dengan menggunakan
do-while. Agak sedikit berbeda dengan while, kondisi pemeriksaan pada do-while
diletakkan di akhir badan loop. Contoh 9.14 memberikan gambaran bagaimana do-
while digunakan dalam C++.
Contoh 9.14. Penggunaan struktur pengulangan dengan do-while.
#include <iostream>
using namespace std;

int main() {
int J = 5;
int K;

do {
K = 1;
do {
cout<<K*J<<' ';
K++;
} while (K <= J);
cout<<endl;
J--;
} while (J >= 1);

return 0;
}
Contoh 9.14 terlihat menampilkan kode program yang cukup rumit. Namun bila
kita cermati, ini adalah kode program dengan pengulangan do while yang bersarang.
Perhatikan cara penulisan dan alur logika programnya. Do-while yang luar
menggunakan variabel counter J dan ini adalah pengulangan dari besar ke kecil
(perhatikan J diinisialisasi dengan nilai 10 dan syarat kondisi pada while J >=1).
Sedangkan do-while yang dalam variabel counter nya adalah K dengan pengulangan
dari kecil ke besar. Bagaimanakah hasil dari eksekusi kode program di atas?
Perhatikan output di bawah ini. Cobalah untuk menelusuri kode program sehingga
kalian benar-benar mengerti mengapa output program bisa menjadi seperti ini.
5 10 15 20 25
4 8 12 16
3 6 9
2 4
1

9.1.6. Input/Output
Sampai dengan bagian ini, kalian telah cukup banyak latihan kode
pemrograman C++. Namun kita belum sekalipun mempelajari statement input /

Rekayasa Perangkat Lunak 233


output pada C++. Sebenarnya kalau kalian jeli, kalian telah secara tidak langsung
mempelajari pernyataan input dan output. Perintah cout dan cin yang telah kalian
gunakan adalah pernyataan input / output yang paling sering digunakan.
Baik perintah cout dan cin digolongkan sebagai stream yang termasuk dalam
kelas iostream. Karena itulah setiap kali kita ingin menggunakan dua perintah
tersebut kita harus memanggil file header iostream di awal program. Stream adalah
peralatan logika yang berguna untuk mendapatkan atau memberikan informasi.
Stream berhubungan dengan perangkat keras seperti keyboard, layar monitor, printer
melalui sistem I/O.
Perintah cin merupakan stream untuk input standar. Perintah ini akan
merekam apa yang kita ketikkan dari keyboard. Perhatikan cara penulisannya pada
contoh 9.15.
Contoh 9.15. Penggunaan cin dan cout.
#include <iostream>
using namespace std;

int main() {
int bil1, bil2;

//cin bagian satu


cout<<"Masukkan bilangan pertama : ";
cin>>bil1;
cout<<"Masukkan bilangan kedua : ";
cin>>bil2;
cout<<"Hasil kali kedua bilangan = "<<bil1*bil2<<endl;

//cin bagian dua


cout<<"Masukkan dua buah bilangan : ";
cin>>bil1>>bil2;
cout<<"Hasil kali kedua bilangan = "<<bil1*bil2<<endl;

return 0;
}
Perintah cin dapat digunakan untuk memasukkan data satu per satu seperti
pada contoh 9.15 (lihat bagian di bawah //cin bagian satu) atau memasukkan data
secara langsung berurutan (lihat bagian di bawah //cin bagian dua). Perintah cin
harus diikuti operator >>.
Perintah cout adalah perintah melakukan output standar yaitu pada layar
monitor. Perintah cout harus diikuti operator <<. Perhatikan contoh 9.15 di atas.
cout dapat digunakan untuk mencetak langsung karakter (ditandai dengan “ dan
diakhiri dengan “) atau isi variabel. Seperti halnya cin, cout dapat digunakan untuk
output satu persatu atau berurutan sekaligus. Pada contoh di atas pernyataan endl
adalah pernyataan untuk mencetak baris baru.

234 Pemrograman Aplikasi dengan C++


9.2 FUNGSI DALAM C++
Fungsi dalam C++ memegang peranan sangat penting. Hal ini karena
sebenarnya program dalam C++ adalah kumpulan dari fungsi-fungsi. Fungsi-fungsi
yang telah tersedia maupun yang kita buat sendiri ini akan dipanggil dalam fungsi
utama yaitu main(). Seperti semua bahasa pemrograman, C++ menyediakan built-in
function yang dapat diakses dengan lebih dulu memanggil file headernya di awal
program yang kita buat. C++ juga menyediakan fasilitas untuk membuat fungsi
sendiri (user-defined function). Pada sub bab ini kita akan mempelajari bagaimana
membuat fungsi sendiri.

9.2.1. Tipe-tipe Fungsi


Ada dua jenis fungsi, yaitu fungsi yang tidak mengembalikan nilai dan fungsi
yang mengembalikan nilai.

• Fungsi yang tidak mengembalikan nilai


Fungsi ini dibuat dengan tipe void. Dalam VB atau Pascal, fungsi ini dikenal
sebagai prosedur. Perhatikan contoh 9.16 berikut.
Contoh 9.16. Fungsi tanpa pengembalian nilai.
#include <iostream>
using namespace std;

// Membuat fungsi cetak angka


void CetakAngka() {
for (int C=0; C<10; C++) {
cout<<C+1<<endl;
}
}

// Fungsi utama dalam program C++


int main() {

// Memanggil fungsi CetakAngka


CetakAngka();

return 0;
}
Pada contoh ini kita membuat fungsi dengan nama CetakAngka dengan tipe
void sehingga tidak mengembalikan nilai (return value). Perhatikan bagaimana
mendeklarasikan fungsi. Fungsi akan berjalan sampai akhir kode pada fungsi
tersebut.

Rekayasa Perangkat Lunak 235


• Fungsi yang mengembalikan nilai
Fungsi ini akan mengembalikan sebuah nilai untuk digunakan pada bagian
program yang lain. Untuk mendefinisikan fungsi tipe ini, kita tidak menggunakan
void, tetapi langsung tipe data dari nilai yang akan dikembalikan oleh fungsi
tersebut. Perhatikan contoh 9.17 berikut.
Contoh 9.17. Fungsi dengan pengembalian nilai.
#include <iostream>

using namespace std;

// Membuat fungsi dengan nilai pengembalian tipe char


char* NilaiChar() {
return "Ini nilai yang akan dikembalikan";
}

// Fungsi utama
int main() {
// Memanggil dan menampilkan hasil fungsi
cout<< NilaiChar();

return 0;
}
Pada tipe fungsi ini, kita membutuhkan pernyataan return untuk menunjukkan
bagian yang akan dikembalikan nilainya. Pada contoh di atas, tipe data dari nilai yang
akan dikembalikan adalah char. Bentuk char dengan tanda * menunjukkan variabel
NilaiChar boleh berisi lebih dari satu huruf dan akan disimpan/dicetak sebagaimana
ketika kita memasukkan isinya.

9.2.2. Penggunaan Parameter dalam Fungsi


Seperti halnya pada VB dan Java, fungsi pada C++ juga membolehkan
digunakan parameter atau argumen untuk melewatkan input atau menampung output
dari fungsi tersebut. Perhatikan contoh-contoh berikut.
Contoh 9.18. Fungsi dengan parameter input.
#include <iostream>
using namespace std;

// Membuat fungsi dengan parameter input


int Kuadrat(int X) {
int hasil;
hasil = X * X;
return hasil;
}

int main() {

236 Pemrograman Aplikasi dengan C++


int Bil, HASIL;
cout<<"Masukkan sebuah bilangan bulat : ";
cin>>Bil;
HASIL = Kuadrat(Bil); //memanggil fungsi kuadrat
cout<<"Kuadrat dari bilangan “<<Bil<<” adalah : "<<HASIL;

return 0;
}
Fungsi pada contoh 9.18 adalah Kuadrat. Fungsi ini membutuhkan satu
variabel input (pada contoh dinamakan X). Pada fungsi main(), variabel Bil adalah
variabel yang digunakan untuk menyimpan nilai yang digunakan sebagai parameter
pada fungsi Kuadrat ketika dipanggil.
Contoh 9.19. Fungsi dengan parameter input dan output.
#include <iostream>
using namespace std;

// Membuat fungsi dengan parameter input


int Kuadrat(int X, int *hasil) {
*hasil = X * X;
return *hasil;
}

int main() {
int Bil, HASIL;
cout<<"Masukkan sebuah bilangan bulat : ";
cin>>Bil;
// Menampilkan nilai setelah diproses di dalam fungsi
cout<<"Kuadrat dari bilanga "<<Bil<<" adalah :
"<<Kuadrat(Bil, &HASIL);

return 0;
}
Contoh 9.19 merupakan pengembangan dari Contoh 9.18. Pada fungsi Kuadrat
kita tambahkan parameter output yaitu hasil. Parameter keluaran, harus dilewatkan
berdasarkan alamat memorinya (yaitu hasil), sehingga harus menggunakan pointer
(lihat tanda * sebelum variabel hasil. Demikian juga cara pemanggilan fungsinya,
parameter input dan outputnya harus disebutkan. Parameter output yang menyimpan
hasil perhitungan harus kita beri awalan &.

9.3 POINTER DAN ARRAY


Bahasa C++ membolehkan kita untuk memanipulasi memori dengan cara
penggunaan pointer. Hal ini merupakan fitur yang tidak disediakan oleh bahasa
pemrograman yang lain. Apabila digunakan secara benar maka akan sangat
menguntungkan, tetapi bila salah dalam penggunaan bisa berakibat pada kerusakan
(crash atau hang) pada sistem operasi.

Rekayasa Perangkat Lunak 237


9.3.1. Konsep dan Pengertian Pointer
Pointer adalah variabel. Namun berbeda dengan variabel normal, pointer
menyimpan alamat pada memori, bukan nilai yang kita masukkan. Perhatikan contoh
berikut.
Contoh 9.20. Mendeklarasikan pointer.
#include <iostream>

using namespace std;

int main() {
long *Alamat;
long X;

Alamat = &X;
X = 5; // Mengisikan nilai 5 ke dalam variabel X

cout<<"Nilai X : "<<X<<endl;
cout<<"Nilai *Alamat : "<<*Alamat<<endl;
cout<<"Nilai Alamat : "<<Alamat<<endl;
cout<<"Nilai &X : "<<&X<<endl;

*Alamat = 20; // Mengisikan nilai 20 ke dalam *Alamat

cout<<"Nilai X : "<<X<<endl;
cout<<"Nilai *Alamat : "<<*Alamat<<endl;
cout<<"Nilai Alamat : "<<Alamat<<endl;
cout<<"Nilai &X : "<<&X<<endl;

return 0;
}
Pada contoh di atas, kita deklarasikan variabel alamat sebagai pointer dengan
menambahkan tanda * di depan nama variabel. Jika kita tidak menggunakan tanda *
berarti variabel tersebut akan berfungsi seperti variabel normal. Variabel X kita
deklarasikan sebagai variabel normal dengan tipe data long. Perhatikan pada baris
Alamat = &X. Baris ini menyatakan bahwa variabel Alamat (bukan pointer) akan diisi
dengan nilai dari alamat dari X. Tanda & di depan nama variabel berarti kita
menginginkan nilai alamat memorinya yang kita gunakan dan bukan nilainya. Apabila
kita eksekusi programnya maka tampilannya akan tampak seperti pada Gambar 9.4.

238 Pemrograman Aplikasi dengan C++


Gambar 9.4. Hasil eksekusi deklarasi pointer.

Perhatikan nilai-nilai output pada Gambar 9.4. Nilai seperti 0x22ff88 adalah
angka hexadesimal dari alamat variabel. Kalau kalian amati, ketika kita memasukkan
nilai 5 pada variabel X maka variabel *Alamat akan berisi juga nilai 5. Demikian juga
ketika kita memasukkan nilai 20 pada variabel *Alamat , nilai X juga berubah menjadi
20. Hal ini karena variabel *Alamat dan X menempati alamat memori yang sama.
Setiap kali kita mendeklarasikan sebuah pointer, maka otomatis pointer akan
menunjuk alamat acak pada memori. Oleh karena itu kita harus mengeset variabel
pointer tersebut agar tidak menunjuk alamat tertentu dengan cara memberi nilai
NULL. Perhatikan contoh kode berikut dan hasil eksekusinya (Gambar 9.5).
Contoh 9.21. Mendeklarasikan pointer dengan NULL.
#include <iostream>

using namespace std;

int main() {

long *Alamat;
long *Alamat1;

Alamat = NULL;

cout<<"Alamat memori yang ditunjuk dengan NULL :


"<<Alamat<<endl;
cout<<"Alamat memori yang ditunjuk tanpa NULL :
"<<Alamat1<<endl;

return 0;
}

Rekayasa Perangkat Lunak 239


Gambar 9.5. Hasil eksekusi pointer NULL.

9.3.2. Penggunaan New dan Delete pada Pointer


Kata kunci New dapat digunakan untuk mengalokasikan memori pada ruang
yang masih kosong. Kata kunci ini diikuti oleh tipe data yang akan dialokasikan
sehingga compiler akan mengetahui seberapa besar memori yang akan dialokasikan.
Sedangkan delete merupakan kebalikan dari new. Delete akan membebaskan memori
dari variabel yang kita gunakan. Perintah delete ini sangat penting, karena apabila
kita tidak membebaskan memori dari penggunaan maka akan sangat memboroskan
pemakaian memori dan pada akhirnya akan membuat sistem berjalan tidak
semestinya. Perhatikan contoh penggunaan new dan delete berikut ini.
Contoh 9.22. Penggunaan new dan delete.
#include <iostream>

using namespace std;

int main() {
int *Alamat;

// Melakukan alokasi memori


Alamat = new int;

// Menggunakan memori yang telah dialokasikan


*Alamat = 100;

cout<<"Nilai *Alamat : "<<*Alamat<<endl;

// membebaskan memori
delete Alamat;

return 0;
}

9.3.3. Array
Seperti telah dijelaskan pada bab-bab sebelumnya, array dapat digunakan
untuk menyimpan banyak data yang tipenya sama pada satu nama variabel.

240 Pemrograman Aplikasi dengan C++


Pendefinisian array pada C++ hamper mirip dengan VB atau Java. Hanya sintaks
penulisannya yang berbeda. Perhatikan contoh array sederhana berikut ini.
Contoh 9.23. Array sederhana.
#include <iostream>

using namespace std;

int main() {
// deklarasi array A dengan 5 buah elemen bertipe int
int A[5];

cout<<"A[C]"<<" "<<"B"<<endl;
// Memasukkan nilai ke dalam elemen array
for (int C=0; C<5; C++) {
double B = 5;
A[C] = C;
B = A[C]/B;
cout<<A[C]<<" "<<B<<endl;
}
return 0;
}
Pada contoh di atas kita mendeklarasikan array dengan nama A dan tipe
datanya adalah int. C pada kode di atas adalah variabel counter. Untuk memasukkan
nilai pada array, perhatikan pada baris A[C] = C. C di sini adalah indeks dari variabel
A. Sama seperti halnya pada VB ataupun Java, nilai default awal dari indeks array
adalah 0. Apabila contoh di atas dijalankan, maka output akan tampak seperti pada
Gambar 9.6.

Gambar 9.6. Output hasil eksekusi program array sederhana.

Pada contoh 9.23 di atas kita mendeklarasikan array tanpa inisialisasi nilai.
Tapi sebenarnya kita dapat langsung member nilai bersamaan dengan pendeklarasian
variabel array. Kemudian kita dapat merubah nilainya ketika program sedang berjalan
atau dibagian lain dari program. Perhatikan contoh 9.24 berikut.

Rekayasa Perangkat Lunak 241


Contoh 9.24. Deklarasi dan inisialisasi array.
#include <iostream>

using namespace std;

int main() {
// Deklarasikan dan inisialisasi array
char X[3] = { 'A', 'B', 'C' };

// Menampilkan nilai awal elemen array


cout<<"Nilai array awal"<<endl;
cout<<"X[0] = "<<X[0]<<endl;
cout<<"X[1] = "<<X[1]<<endl;
cout<<"X[2] = "<<X[2]<<endl;

// Mengubah elemen ke-1 dan ke-2


X[0] = 'G';
X[1] = 'H';

// Menampilkan nilai perubahan dari elemen array


cout<<"Nilai array setelah dirubah"<<endl;
cout<<"X[0] = "<<X[0]<<endl;
cout<<"X[1] = "<<X[1]<<endl;
cout<<"X[2] = "<<X[2]<<endl;

return 0;
}
Jika kita jalankan kode program di atas, maka hasilnya akan tampak seperti
pada Gambar 9.7.

Gambar 9.7. Hasil eksekusi deklarasi dan inisialisasi array.

C++ juga menyediakan fitur untuk membuat array multidimensi. Deklarasi


array multidimensi dapat dilakukan dengan cara seperti pada contoh 9.25.

242 Pemrograman Aplikasi dengan C++


Contoh 9.25. Deklarasi array multidimensi.
#include <iostream>

using namespace std;

int main() {

// Deklarasi dan inisialisasi array multidimensi


int Matrik_A[3][2] = { {1,2}, {3,4}, {5,6} };
int Matrik_B[2][3] = { {1,2,3}, {4,5,6} };

// Mendeklarasikan variabel untuk indeks pengulangan


int j, k;

// Menampilkan nilai yang tersimpan dalam elemen array A


cout<<"ISI MATRIKS A"<<endl;
for (j=0; j<3; j++) {
for (k=0; k<2; k++) {
cout<<"Matrik A["<<j<<"]["<<k<<"] =
"<<Matrik_A[j][k]<<endl;
}
cout<<endl;
}

// Menampilkan nilai yang tersimpan dalam elemen array B


cout<<"ISI MATRIKS B"<<endl;
for (j=0; j<2; j++) {
for (k=0; k<3; k++) {
cout<<"Matrik B["<<j<<"]["<<k<<"] =
"<<Matrik_B[j][k]<<endl;
}
cout<<endl;
}

return 0;
}
Pada contoh di atas, ada dua buah array multidimensi yaitu Matrik_A dan
Matrik_B. Keduanya merupakan matriks dua dimensi. Matrik_A memiliki 3 baris dan
2 kolom sedangkan Matrik_B memiliki 2 baris dan 3 kolom. Pengisian nilai elemen
array dilakukan pada saat deklarasi. Namun kalian dapat mengisi dengan
menggunakan masukkan dari keyboard melalui perintah cin. Hasil eksekusi dari
program di atas akan tampak seperti pada Gambar 9.8.

Rekayasa Perangkat Lunak 243


Gambar 9.8. Hasil eksekusi array multidimensi.

9.4 KELAS
Konsep kelas pada C++ sama persis dengan apa yang telah kalian pelajari pada
bab 8. Konsep ini diturunkan dari paradigm pemrograman berorientasi obyek yang
telah disampaikan pada bab tersebut. Apabila kalian telah mengerti dengan baik
konsep pemrograman berorientasi obyek dan pemrograman kelas pada Java, maka
konsep kelas pada C++ bukanlah perkara yang sulit. Perlu kalian ketahui, Java
mengambil sebagian besar konsep pemrograman C++ (termasuk kelas) untuk
diterapkan. Perbedaan utama mungkin hanya pada sintaks penulisannya. Pada bab
ini konsep pemrograman berorientasi obyek tidak akan dibahas ulang, namun akan
langsung pada penerapannya pada C++.

9.4.1. Deklarasi Kelas


Sama seperti pada Java, pembuatan kelas dalam C++ menggunakan kata kunci
class. Di dalam kelas tersebut terdapat data dan method yang akan digunakan oleh
obyek yang akan dibuat (instance) dari kelas tersebut. Data dan method ini biasan
disebut sebagai anggota kelas (class member). Method dalam C++ sama bentuknya
dengan fungsi yang telah kalian pelajari di sub bab sebelumnya. Perhatikan contoh
berikut.
Contoh 9.26. Deklarasi dan penggunaan kelas.
#include <iostream>
using namespace std;

244 Pemrograman Aplikasi dengan C++


class PersegiPanjang {
int x, y;
public:
void set_nilai (int,int);
int luas() {return (x*y);}
};

void PersegiPanjang::set_nilai (int a, int b) {


x = a;
y = b;
}

int main () {
PersegiPanjang pp1, pp2;
pp1.set_nilai (3,4);
pp2.set_nilai (7,12);
cout << “Luas pp1 : “ << pp1.luas()<<endl;
cout << “Luas pp2 : “ << pp2.luas()<<endl;
return 0;
}
Pada contoh di atas, kelas yang kita deklarasikan bernama PersegiPanjang dan
mempunyai anggota kelas dua data yaitu x dan y dan dua method yaitu set_nilai dan
luas(). Dua buah method tersebut ditetapkan mempunyai akses public. Seperti
halnya java, ada 3 hak akses terhadap data atau method dalam kelas, yaitu public,
private dan protected. Public berarti anggota kelas tersebut dapat diakses dari luar
kelas. Private berarti anggota kelas tersebut hanya dapat diakses di dalam kelas
tersebut. Sedangkan protected berarti anggota kelas tersebut dapat diakses oleh
turunan (subclass) dari kelas tersebut, tetapi tidak oleh bagian di luar kelas.
Method set_nilai mempunyai dua argument/parameter yang semuanya bertipe
data int namun tidak memiliki pengembalian nilai, sehingga kita menggunakan kata
kunci void. Method luas() tidak memiliki argumen namun memiliki pengembalian nilai.
Untuk method yang memiliki pengembalian nilai maka kita menggunakan tipe data di
depan nama method. Bukalah kembali bab 8 untuk mengingat kembali tentang
argumen dalam method.
Pada C++ kita dapat mengimplementasikan method di dalam kelas atau di luar
kelas, tetapi deklarasi method harus berada di dalam kelas. Umumnya kita
meletakkan implementasi method di luar kelas (di luar tanda { }). Perhatikan pada
contoh di atas. Deklarasi method set_nilai terletak di dalam kelas PersegiPanjang
namun implementasinya berada di luar kelas. Sedangkan method luas(), baik
deklarasi maupun implementasi berada di dalam kelas. Pada implementasi method di
luar kelas kita menggunakan tanda :: untuk mendefinisikan anggota kelas di luar
kelasnya (perhatikan pada baris void PersegiPanjang::set_nilai (int a,
int b)).
Setelah kelas terbentuk kita dapat menggunakan dengan membuat obyek yang
merupakan instance dari kelas tersebut. Perhatikan pada bagian yang diawali dengan
int main(). Pada bagian ini kita membentuk dua obyek dengan nama pp1 dan

Rekayasa Perangkat Lunak 245


pp2 sebagai instance dari kelas PersegiPanjang. Kemudian kita menggunakan obyek-
obyek ini untuk memanggil method set_nilai dan luas() dari kelas PersegiPanjang.
Ketikkan program di atas kemudian jalankan. Bagaimanakah hasilnya?
Seperti pada Java, umumnya suatu kelas akan mempunyai constructor yang
digunakan untuk menginisialisasi variabel atau mengalokasikan memori. Constructor
ini mempunyai nama yang sama dengan kelasnya. Di dalam suatu kelas sebaiknya
juga dibentuk method destructor. Destructor adalah kebalikan dari constructor.
Tujuan utamanya adalah mengembalikan nilai variabel ke bentuk awal dan
membebaskan memori dari penggunaan variabel. Method destructor mempunyai
nama yang sama dengan nama kelasnya, tetapi dengan ditambah awalan tanda ~.
Perhatikan contoh penggunaan constructor dan destructor berikut.
Contoh 9.27. Constructor dan destructor.
#include <iostream>
using namespace std;

class PersegiPanjang {
int *panjang, *lebar;
public:
PersegiPanjang (int,int);
~PersegiPanjang ();
int luas () {return (*panjang * *lebar);}
};

PersegiPanjang::PersegiPanjang (int a, int b) {


panjang = new int;
lebar = new int;
*panjang = a;
*lebar = b;
}

PersegiPanjang::~PersegiPanjang () {
delete panjang;
delete lebar;
}

int main () {
PersegiPanjang pp1 (3,4), pp2 (5,6);
cout << "Luas pp1: " << pp1.luas() << endl;
cout << "Luas pp2: " << pp2.luas() << endl;
return 0;
}

9.4.2. Inheritance
C++ juga memberikan fasilitas inheritance pada kelas. Proses pewarisan pada
C++ agak lebih rumit dibandingkan dengan Java. Hal ini karena C++ memberikan

246 Pemrograman Aplikasi dengan C++


kemungkinan pewarisan dengan pertimbangan hak akses. Ada dua hak akses dalam
pewarisan superclass ke subclass, yaitu public dan private.
Apabila suatu kelas diturunkan sebagai public dari superclassnya maka
ketentuannya adalah sebagai berikut:
- Bagian public yang ada pada superclass akan tetap menjadi public pada
subclass.
- Bagian protected yang ada pada superclass akan tetap menjadi protected pada
subclassnya.
- Bagian private yang ada pada superclass tidak akan dapat diakses oleh
subclass.
Apabila suatu kelas diturunkan sebagai private dari superclassnya maka
ketentuannya adalah sebagai berikut:
- Bagian public yang ada pada superclass akan menjadi private pada subclass.
- Bagian protected yang ada pada superclass akan menjadi private pada
subclassnya.
- Bagian private yang ada pada superclass tidak akan dapat diakses oleh
subclass.
Perhatikan contoh berikut.
Contoh 9.28. Pewarisan.
#include <iostream>
using namespace std;

class CPolygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b;}
};

class CRectangle: public CPolygon {


public:
int area ()
{ return (width * height); }
};

class CTriangle: public CPolygon {


public:
int area ()
{ return (width * height / 2); }
};

int main () {
Rekayasa Perangkat Lunak 247
CRectangle rect;
CTriangle trgl;
rect.set_values (4,5);
trgl.set_values (4,5);
cout << rect.area() << endl;
cout << trgl.area() << endl;
return 0;
}
Pada kode program di atas, CPolygon adalah superclass, sedangkan CRectangle
dan CTriangle adalah subclass. Pada kelas CPolygon, variabel width dan height
dideklarasikan sebagai protected, karena ditujukan untuk bisa diakses oleh
subclassnya saja. Selain itu kelas ini juga mempunyai method set_values. Kedua
variabel dan method ini akan diwariskan pada subclassnya yaitu CRectangle dan
CTriangle. Perhatikan bagaimana CRectangle dan CTriangle dideklarasikan sebagai
kelas turunan dari CPolygon dengan menggunakan kata kunci public. Sekarang coba
ganti kata public pada deklarasi kelas CTriangle sehingga menjadi class
CTriangle: private CPolygon. Apabila kalian kompilasi maka kalian akan
menjumpai pesan kesalahan sebagai berikut:
Compiling source file(s)...
oo-test.cpp
oo-test.cpp: In function `int main()':
oo-test.cpp:9: error: `void CPolygon::set_values(int, int)' is
inaccessible
oo-test.cpp:28: error: within this context
oo-test.cpp:28: error: `CPolygon' is not an accessible base of
`CTriangle'
Mengapa kesalahan kompilasi bisa terjadi? Hal ini karena berlakunya aturan di
atas. Method set_values pada kelas CPolygon dideklarasikan dengan public, tetapi
diturunkan ke kelas CTriangle dengan private. Hal ini akan merubah method yang
semula public menjadi private ketika berada pada kelas CTriangle. Tentunya kalian
ingat bila anggota kelas diberi hak akses private maka dia tidak dapat diakses dari
luar.

9.4.3. Polimorfisme
Pada C++, untuk dapat menerapkan polimorfisme maka kita perlu
menggunakan fungsi khusus yang dikenal sebagai fungsi virtual. Fungsi ini kita
letakkan pada superclass, kemudian fungsi tersebut dapat kita definisikan ulang pada
subclass. Perhatikan contoh berikut.
Contoh 9.29. Penggunaan fungsi virtual.
#include <iostream>

using namespace std;

class AnggotaSekolah {

248 Pemrograman Aplikasi dengan C++


char* nama;
char* alamat;
public:
void SetNama(char* N) {
nama = N;
}
void SetAlamat(char* A) {
alamat = A;
}
char* GetNama() {
return nama;
}
char* GetAlamat() {
return alamat;
}
// Membuat fungsi virtual
virtual void Bekerja() {
cout<<"Bekerja"<<endl;
}
virtual void Berpakaian() {
cout<<"Berpakaian"<<endl;
}
};

class Siswa: public AnggotaSekolah {


char* Jurusan;
char* Program;
int semester;
public:
void SetJurusan(char* J) {
Jurusan = J;
}
void SetProgram(char* P) {
Program = P;
}
void SetSemester(int smt) {
semester = smt;
}
char* GetJurusan() {
return Jurusan;
}
char* GetProgram() {
return Program;
}
int GetSemester() {
return semester;
}
// override pada fungsi Bekerja
void Bekerja() {
cout<<"Bekerja menuntut ilmu"<<endl;

Rekayasa Perangkat Lunak 249


}
// override pada fungsi Berpakaian
void Berpakaian() {
cout<<"Berpakaian seragam putih abu-abu"<<endl;
}
};

class Guru: public AnggotaSekolah {


char* jabatan;
char* keahlian;
public:
void SetJabatan(char* jbt) {
jabatan = jbt;
}
void SetKeahlian(char* khl) {
keahlian = khl;
}
char* GetJabatan() {
return jabatan;
}
char* GetKeahlian() {
return keahlian;
}
// override pada fungsi Bekerja
void Bekerja() {
cout<<"Bekerja mengajarkan ilmu"<<endl;
}
// override pada fungsi Berpakaian
void Berpakaian() {
cout<<"Berpakaian baju seragam dinas resmi"<<endl;
}
};

// Fungsi utama
int main() {

// instansiasi pada kelas AnggotaSekolah, Siswa dan Guru


AnggotaSekolah As;
Siswa Sw;
Guru Gr;

// Memanggil fungsi Bekerja dari masing-masing kelas


cout<<"Anggota sekolah sedang ";
As.Bekerja();
cout<<"Siswa sedang ";
Sw.Bekerja();
cout<<"Guru sedang ";
Gr.Bekerja();
cout<<'\n';

250 Pemrograman Aplikasi dengan C++


// Memanggil fungsi Berpakaian dari masing-masing kelas
cout<<"Anggota sekolah harus ";
As.Berpakaian();
cout<<"Siswa harus ";
Sw.Berpakaian();
cout<<"Guru harus ";
Gr.Berpakaian();

return 0;
}
Pada kode program di atas, ada dua fungsi/method virtual yaitu Bekerja dan
Berpakaian. Method inilah yang akan kita gunakan pada subclass namun dengan
penerapan yang lain. Perhatikan isi dari masing-masing method tersebut pada
masing-masing subclass. Cara ini biasa disebut sebagai overriding. Coba kembali bab
8 untuk memperjelas pengertian overriding. Bandingkan juga bagaimana overriding
dilakukan pada Java dan C++. Jika program di atas dijalankan, maka hasilnya akan
tampak seperti pada Gambar 9.9. Overloading juga dapat dilakukan pada fungsi
virtual. Kalian tentu masih ingat perbedaan overriding dan overloading yang sudah
dijelaskan di bab 8.

Gambar 9.9. Hasil eksekusi fungsi virtual dan overriding.

Pada contoh 9.29 di atas, fungsi virtual dibuat lengkap dengan isi dari fungsi
tersebut. Namun sebenarnya C++ juga menyediakan fungsi virtual murni (pure
virtual function) yang hanya ada deklarasi fungsinya tapi tidak ada isinya. Konsep ini
mirip dengan ketika kalian pelajari tentang interface pada Java. Fungsi virtual murni
ini kemudian akan diterjemahkan isinya pada kelas-kelas yang merupakan turunan
dari kelas tersebut. Keuntungan dari penggunaan fungsi virtual murni ini adalah
keleluasaan kita untuk mendefinisikan fungsi-fungsi tersebut pada kelas turunannya.
Fungsi virtual murni biasanya digunakan pada kelas abstrak. Kelas abstrak adalah
kelas yang mempunyai paling tidak satu fungsi virtual murni. Karena masih abstrak
kita tidak diperbolehkan untuk membuat obyek langsung dari kelas abstrak.

Rekayasa Perangkat Lunak 251


Konsep polimorfisme pada C++ disusun dengan berdasarkan pengertian pada
fungsi virtual, fungsi virtual murni, overriding, overloading, dan kelas abstrak.
Perhatikan contoh polimofisme berikut ini.
Contoh 9.30. Penerapan polimorfisme.
#include <iostream>
using namespace std;

class CPolygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b; }
virtual int area (void) =0; //fungsi virtual murni
void printarea (void)
{ cout << this->area() << endl; }
};

class CRectangle: public CPolygon {


public:
// overriding fungsi area
int area (void)
{ return (width * height); }
};

class CTriangle: public CPolygon {


public:
// overriding fungsi area
int area (void)
{ return (width * height / 2); }
};

int main () {
CRectangle rect;
CTriangle trgl;
CPolygon *ppoly1 = &rect; // mendefinisikan obyek pointer
CPolygon *ppoly2 = &trgl; // mendefinisikan obyek pointer
ppoly1->set_values (4,5);
ppoly2->set_values (4,5);
ppoly1->printarea();
ppoly2->printarea();
return 0;
}
Pada contoh di atas, kela CPolygon adalah kelas abstrak yang memiliki fungsi
virtual murni yaitu area. Perhatikan cara mendeklarasikan fungsi virtual murni pada
baris yang diawali dengan pernyataan virtual. Fungsi ini tidak dibuat isinya tapi dibuat
dengan tanda = 0. Kita tidak dapat membuat obyek langsung dari kelas CPolygon ini.
Tetapi kita dapat membuat obyek pointer untuk mengalokasikan memori berdasarkan
252 Pemrograman Aplikasi dengan C++
kelas ini. Pada kelas CPolygon juga digunakan kata kunci this. Kata kunci ini
berfungsi untuk menunjuk pada kelas itu sediri. Pernyataan this->area() pada
kode di atas sama artinya dengan CPolygon->area(). Jadi pernyataan ini sama
artinya dengan memanggil fungsi virtual area di dalam kelas itu.
Pada kode diatas dibuat dua variabel pointer *ppoly1 dan *ppoly2 yang nilainya
sama dengan nilai dari alamat variabel rect dan trgl. Perhatikan dengan baik
penggunaan tanda * dan & untuk merujuk pada alamat memori. Jalankan program di
atas dan perhatikan hasilnya.

9.5 MERANCANG APLIKASI BERORIENTASI OBYEK


Konsep dasar tentang pemrograman berorientasi obyek telah kalian pelajari
pada Bab 8. Sedangkan penerapannya dalam bahasa pemroraman juga telah kalian
pelajari dengan menggunakan Java pada bab 8 dan C++ di bab ini. Pada bagian ini
kita akan mencoba untuk membuat rancangan aplikasi berorientasi obyek.
Kasus yang kita angkat adalah salah satu bagian dari aplikasi penjualan pada
toko buku, yaitu persediaan barang. Jika kalian cermati ada banyak jenis barang
yang dijual pada sebuah toko buku, antara lain buku-buku bacaan, majalah, alat tulis
kantor, dan lain-lain. Masing-masing barang mempunyai nama merek, harga, dan
karakteristik yang lain. Selain itu masing-masing barang juga mempunyai ketentuan-
ketentuan lain yang berhubungan dengan penetapan harga, potongan, jumlah
pembelian dan tempat penyimpanan. Persediaan barang pada took buku ditentukan
oleh barang yang masuk dari hasil pemesanan dan barang yang keluar karena terjual.
Setiap barang keluar maka secara otomatis barang di dalam persediaan akan
berkurang.
Langkah awal dalam aplikasi berorientasi obyek adalah dengan melakukan
abstraksi pada permasalahan. Kalau kita perhatikan dengan seksama pada kasus di
atas, kita bisa membuat kelas induk dari semua jenis barang yang ada. Hal ini karena
selain karakteristik khusus dari masing-masing jenis barang, juga ada karakteristik
umum yang dipunyai oleh semua barang. Seperti contoh harga adalah karakteristik
umum yang dipunyai oleh semua barang. Tetapi merek adalah khusus pada jenis
item barang tertentu, terutama pada alat tulis. Demikian juga dengan karakteristi
judul hanya dimiliki oleh buku bacaan. Dengan melihat kondisi tersebut kita dapat
membuat abstraksi permasalahan sebagai berikut.

Rekayasa Perangkat Lunak 253


Gambar 9.10. Abstraksi kasus persediaan barang di toko buku.

Pada Gambar 9.10, kita membentuk 6 kelas untuk mempermudah kasus di


atas. Ada dua macam hubungan yang terbentuk pada gambar di atas, yaitu
hubungan pewarisan (inheritance) yang ditandai dengan tanda panah dan asosiasi
(hubungan antara dua atau lebih kelas) yang ditandai garis tanpa tanda panah.
Barang adalah superclass dan bisa kita nyatakan sebagai kelas abstrak. BahanBacaan
dan AlatTulis adalah subclass dari Barang, sedangkan Buku dan Majalah adalah
subclass dari BahanBacaan. Sedangkan Lokasi merupakan kelas yang menunjukkan
tempat menyimpan barang.
Pada kasus di atas kita dapat menerapkan konsep inheritance dan polimorfisme
serta menggunakan fungsi virtual murni pada kelas Barang. Kemudian fungsi-fungsi
ini dapat kita turunkan untuk diimplementasikan pada subclass-subclassnya.
Rancangan kode program akan tampak seperti pada table 9.3.
Dengan melihat diagram dan tabel 9.3, kita dapat menerapkan dalam kode
program. Akan ada 6 kelas yang kita buat kodenya. Masing-masing kelas bisa dalam
satu file sendiri-sendiri atau semua kelas bisa kita letakkan dalam satu file. Kemudian
implementasi dari class-class tersebut kita buat dalam satu file tersendiri. Untuk
menghubungkan antar file dan memanggil class pada file lain kita menggunakan
preprocessor #include diikuti dengan nama filenya.

254 Pemrograman Aplikasi dengan C++


Tabel 9.3. Kelas, fungsi, dan parameter pada aplikasi persediaan toko buku.
Nama Kelas Variabel Fungsi Parameter Keterangan
Barang KodeBrg - SisaBarang pAwal, bKeluar, Kelas
bMasuk Abstrak
Harga - Simpan kodeLok
SediaanAwal
BrgKeluar
BrgMasuk
BahanBacaan Penerbit Subclass dan
mewarisi
anggota
kelas Barang
Buku ISBN - setDiskon Subclass dari
Judul - getDiskon BahanBacaan
Pengarang - HrgDiskon Hrg, Potongan dan mewarisi
Tahun anggota
JumlahHalaman kelas
Diskon tersebut
Majalah Nama Subclass dari
NoEdisi BahanBacaan
TglTerbit dan mewarisi
anggota
kelas
tersebut
AlatTulis Supplier Subclass dari
Nama BahanBacaan
Merek dan mewarisi
anggota
kelas
tersebut
Lokasi KodeLokasi setKodeLok Kelas yang
Deskripsi getKodeLok berasosiasi
dengan kelas
Barang

9.6 RINGKASAN
• Struktur umum program dalam C++ meliputi bagian pendaftaran file,
pendefinisian fungsi, bagian main(), dan blok kode.
• Tipe data primitive pada C++ terdiri dari int, long, float, double, char, bool,
dan short. Tipe data composite yang disediakan adalah struct, enum dan
array.

Rekayasa Perangkat Lunak 255


• Tipe-tipe operator yang dapat digunakan adalah operator assignment,
operator unary, operator binary, operator relasional, operator bitwise dan
operator ternary.
• Struktur control pemilihan dapat dilakukan dengan if (tanpa then) dan switch
... case. Sedangkan untuk pengulangan, C++ menyediakan perintah for,
while, dan do-while.
• Pernyataan input dan output dapat dilakukan dengan perintah cout dan cin
sebagai stream yang termasuk dalam kelas iostream.
• Fungsi dapat tidak mengembalikan nilai tetapi juga dapat mengembalikan
nilai. Parameter pada fungsi dapat berupa parameter input, parameter output
atau dua-duanya.
• Pointer adalah variabel. Namun berbeda dengan variabel normal, pointer
menyimpan alamat pada memori, bukan nilai yang kita masukkan.
• C++ mendukung konsep pemrograman berorientasi obyek melalui pembuatan
kelas, inheritance, fungsi virtual, overriding, overloading dan polimorfisme.

9.7 SOAL-SOAL LATIHAN


1. Buatlah program C++ untuk mencari rata-rata 5 buah bilangan 34, 56, 91,11,
22.
2. Buatlah program menggunakan C++ untuk menentukan harga barang setelah
di diskon dengan tampilan sbb:
Masukkan harga barang/unit : Rp. 20000
Jumlah barang yang dibeli : 5
----------------------------------------------
Total Harga sebelum diskon : Rp. 100000
Diskon (10%) : Rp. 10000
------------------ -
Harga bersih : Rp. 90000

3. Seseorang punya rekening tabungan di bank sebesar Rp. 10.000,- (saldo


awal). Selanjutnya ia dapat menyetor atau mengambil tabungannya. Buatlah
program dengan C++ untuk keperluan transaksi di bank tsb. Tampilan menu
utamanya sbb:
--------------------------------------
PT. BANK ABC
--------------------------------------
Saldo : ....
Menu Transaksi
1. Setor Tabungan
2. Ambil Tabungan
3. Exit
Pilihan menu (1/2/3) ? ...
256 Pemrograman Aplikasi dengan C++
Ketentuan:
Bank membuat kebijakan bahwa saldo minimum yang
harus disisakan di rekening adalah Rp. 10.000,-

Jika nasabah memasukkan angka 1 maka dia akan diminta memasukkan jumlah
rupiah yang akan disetor. Jika nasabah memilih angka 2 maka nasabah diminta
memasukkan jumlah rupiah yang akan ditarik. Jika jumlah penarikkan
mengakibatkan saldo kurang dari Rp. 10000 maka program akan menolak.
(Petunjuk: gunakan pernyataan cin untuk mendapatkan input dari keyboard)
4. Buatlah program menggunakan function untuk menentukan nilai akhir suatu
pelajaran. Terdapat 2 argumen function yaitu nilai ujian tengah semester dan
nilai ujian akhir semester. Output yang diinginkan adalah jika nilai rata-rata
lebih besar atau sama dengan 80 maka nilai akhirnya adalah A, jika nilai rata-
rata kurang dari 80 dan lebih besar sama dengan 70 maka nilainya B, jika
kurang dari 70 maka nilainya C.
5. Perhatikan contoh soal pada Bab 8 no 6. Buatlah diagram abstraksi sistemnya
kemudian buatlah kode programnya dengan menggunakan bahasa C++.

Rekayasa Perangkat Lunak 257


258 Pemrograman Aplikasi dengan C++
Gambar di samping ini adalah gambar
sebuah pesawat telepon seluler atau lebih
dikenal sebagai handphone yang sedang
menjalankan salah satu aplikasi yaitu Contact
List. Mungkin aplikasi seperti pada gambar ini
tidak asing bagi kalian yang pernah
menggunakan handphone. Aplikasi ini
menyimpan nama teman, orang tua atau yang
lainnya lengkap dengan nama dan nomor
teleponnya. Bahkan kadang-kadang dilengkapi
dengan alamat email, alamat kantor, nomor fax
dan data-data lainnya.
Perhatikan aplikasi Contact List ini. Ketika
kalian memasukkan nama dan nomor telepon
seseorang maka nama dan nomor telepon
tersebut tidak akan tertukar dengan nama atau
nomor telepon orang lain. Semuanya teratur
rapi. Kalian juga bisa mencari nama orang
tertentu hanya dengan mengetikkan beberapa
huruf yang ada hubungannya dengan nama.
Gambar 10.1. Fasilitas contact Perhatikan juga bahwa nama yang tersimpan
list pada pesawat telepon selalu urut abjad, meskipun anda
seluler. memasukkannya tidak berdasarkan urutan.
Data nama, nomor telepon dan data-data
lainnya pada aplikasi Contact List disusun berdasarkan konsep pengaturan data yang
lebih dikenal sebagai basis data. Pada bab ini kita akan mempelajari konsep-konsep
dasar basis data. Kompetensi dasar sistem manajemen basis data (DBMS)
merupakan bagian dari standar kompetensi membuat aplikasi berbasis Microsoft
Access yang akan dibahas detil pada Bab 11. Bagian akhir dari bab ini akan ditutup
dengan ringkasan dan latihan soal.

Rekayasa Perangkat Lunak 259


TUJUAN
Setelah mempelajari bab ini diharapkan pembaca akan mampu :
o Menjelaskan pengertian data, basis data dan sistem manajemen
basis data (DBMS)
o Menjelaskan Entity-Relationship Diagram
o Menjelaskan basis data relasional

10.1. DATA, BASIS DATA DAN SISTEM MANAJEMEN BASIS DATA

10.1.1. Basis Data


Basis data (database) merupakan kumpulan dari data yang saling berhubungan
satu dengan yang lainnya, tersimpan dalam perangkat keras komputer dan digunakan
perangkat lunak untuk memanipulasinya. Basis data merupakan salah satu komponen
utama dalam sistem informasi, karena merupakan basis dalam penyediaan informasi
bagi para pemakai (Fathansyah, 1999; Post, 1999).
Jika dibayangkan, basis data mirip dengan lemari di ruang administrasi sekolah
yang menyimpan berbagai arsip. Masing-masing jenis arsip dikelompokkan, diatur
dan disimpan pada tempat yang telah ditentukan. Sehingga akan ada kelompok arsip
siswa, arsip guru, arsip mata pelajaran, arsip keuangan, dan lain-lain. Perbedaannya
hanya pada media penyimpanannya. Kalau lemari arsip menggunakan lemari dari
kayu, besi atau plastik, sedangkan basis data menggunakan media penyimpan
elektronis seperti disk (hard disc, CD, atau tape). Gambar 10.2 memberikan ilustrasi
tentang kesamaan lemari arsip dan basis data.
Satu hal penting yang harus diperhatikan, basis data bukan hanya sekedar
penyimpanan data secara elektronis. Tidak semua penyimpanan data elektronis bisa
disebut basis data. Apabila penyimpanan itu tidak menggunakan prinsip pengaturan,
pemisahan atau pengorganisasian maka kita tidak dapat menyebut penyimpanan data
tersebut sebagai basis data. Pada Gambar 10.2 terlihat penerapan prinsip
pengaturan, pengorganisasian atau pemisahan, baik pada lemari arsip atau pada basis
data.

260 Dasar-dasar Sistem Basis Data


Arsip
Siswa

Arsip
Guru

Arsip
Keuangan

Data
Guru

Data
Siswa
Basis Data
Dalam
Media Penyimpanan

Data
Keuangan

Gambar 10.2. Lemari arsip dan basis data.

Prinsip utama dalam basis data adalah konsep independensi data yaitu
pemisahan data dari program aplikasinya (Lewis et al., 2002; Post, 1999). Sedangkan
tujuan utama dalam basis data adalah membantu pengguna dalam abstraksi suatu
sistem. Ada tiga level abstraksi yang biasanya digunakan yaitu physical level,
conceptual level dan view level (Gambar 10.3). Physical level menunjukkan
bagaimana data akan disimpan. Conceptual level berkaitan dengan data apa yang
akan disimpan dan bagaimana hubungan antar data tersebut. View level merupakan
level tertinggi yang menjelaskan bagian-bagian basis data pada pengguna tertentu
(Ramakrishnan and Gehrke, 2000).

Rekayasa Perangkat Lunak 261


User 1 User 2 User 3

View 1 View 2 View 3

Conceptual Level

Physical Level

Gambar 10.3. Tingkatan dalam abstaksi data (Lewis et al., 2002).

Basis data mempunyai beberapa kriteria penting, yaitu :


1. Bersifat data oriented dan bukan program oriented.
2. Dapat digunakan oleh beberapa program aplikasi tanpa perlu mengubah basis
datanya.
3. Dapat dikembangkan dengan mudah, baik volume maupun strukturnya.
4. Dapat memenuhi kebutuhan sistem-sistem baru secara mudah
5. Dapat digunakan dengan cara-cara yang berbeda.
Secara bertingkat, operasi dasar basis data dapat digambarkan dalam skema
pada Gambar 10.4. Operasi-operasi tersebut meliputi:
- Pembuatan basis data baru (create database). Operasi ini sama dengan
pembuatan atau pembelian lemari arsip yang baru.
- Penghapusan basis data (drop database). Operasi ini sama dengan
pengrusakan atau penghancuran lemari arsip.
- Pembuatan tabel baru (create table). Operasi ini sama dengan penambahan
kelompok arsip baru. Operasi ini baru bisa dijalankan jika basis data telah
dibuat.
- Penghapusan tabel (drop table). Operasi ini sama dengan pengrusakan
kelompok arsip lama. Operasi ini baru bisa dijalankan jika tabel telah ada pada
suatu basis data.

262 Dasar-dasar Sistem Basis Data


Gambar 10. 4. Operasi-operasi dasar pada basis data.

- Pengisian atau penambahan data baru (insert data) pada suatu tabel. Operasi
ini mirip dengan penambahan lembaran arsip baru pada kelompok arsip.
Operasi ini baru bias dijalankan jika tabel telah dibuat.
- Pengambilan data dari suatu tabel (retrieve data). Operasi ini mirip dengan
pencarian lembaran arsip yang tersimpan dalam kelompok arsip.
- Pengubahan data dari suatu tabel (update data). Operasi ini mirip dengan
perbaikan isi lembaran arsip dari suatu kelompok arsip
- Penghapusan data dari suatu tabel (delete). Operasi ini mirip dengan
penghapusan sebuah lembaran arsip dari suatu kelompok arsip.
Basis data dibangun untuk memenuhi tujuan dalam pengorganisasian data,
yang antara lain sebagai berikut :
1. Efisiensi meliputi kecepatan (speed), ruang simpan (space) dan keakuratan
(accuracy).
2. Menangani data dalam jumlah besar.
3. Kebersamaan pemakaian (Shareability).
4. Meniadakan duplikasi dan inkonsistensi data.

10.1.2. Sistem Manajemen Basis Data


Pengelolaan basis data secara fisik tidak dilakukan oleh pemakai secara
langsung, tetapi ditangani oleh sebuah Perangkat Lunak yang khusus/spesifik.
Perangkat lunak inilah disebut DBMS yang akan menentukan bagaimana data
Rekayasa Perangkat Lunak 263
diorganisasi, disimpan, diubah dan diambil kembali. Ia juga menerapkan mekanisme
pengaman data, pemakaian data secara bersama, pemaksaan keakuratan/konsistensi
data, sebagainya. Secara ringkas struktur suatu DBMS dapat dilihat pada Gambar
10.5.

Gambar 10.5. Struktur umum DBMS.

Aplikasi-aplikasi tambahan bersifat opsional (bisa ada dan bisa tidak) dan
biasanya terdapat pada DBMS sebagai fungsi tambahan. Sebagai contoh, aplikasi
pembuat report (laporan), aplikasi untuk mendisain form, aplikasi untuk membuat
diagram atau chart, aplikasi untuk monitoring sistem, dan aplikasi-aplikasi lainnya.
Ada puluhan bahkan mungkin ratusan perangkat lunak DBMS yang tersedia.
Masing-masing dengan spesifikasinya sendiri-sendiri. Mulai dari yang sangat
sederhana sampai yang paling kompleks. Pada bagian ini kita akan membahas 5
buah DBMS yang cukup familiar dikalangan pengguna DBMS, yaitu Microsoft Access,
MySQL, Microsoft SQL Server, PosgreSQL, dan Oracle.
• Microsoft Access
Microsoft Access atau kadang disebut juga Microsoft
Office Access adalah DBMS relational keluaran dari Microsoft
yang termasuk dalam paket Microsoft Office. Microsoft Access
mengkombinasikan engine relational Microsoft Jet Database,
Graphical User Interface (GUI) dan perangkat pengembang
perangkat lunak. Microsoft Access dapat menggunakan data
yang disimpan dalam Microsoft Jet Database, Microsoft SQL
Gambar 10.6. Server, Oracle atau tipe lain asal kompatibel dengan ODBC
Logo MS Access (Open Database Connectivity).

264 Dasar-dasar Sistem Basis Data


Microsoft Access seringkali digunakan dalam
pengembangan aplikasi secara cepat (Rapid Application
Development), terutama untuk membangun prototipe dan
aplikasi stand-alone. Microsoft Access juga dapat digunakan
sebagai basis data untuk aplikasi berbasis web sederhana.
Namun pada aplikasi yang lebih kompleks, baik berdasarkan web
atau tidak, Microsoft Access bukanlah pilihan yang baik.
Terutama karena kekurangannya dalam menangani penggunaan
oleh banyak pengguna (multi-user). Hal ini karena sebenarnya
Microsoft Access adalah sebuah basis data personal yang lebih
ditujukan untuk single-user. Microsoft Access juga tidak
dilengkapi dengan database triggers dan stored procedurs.

Gambar 10.7. Tampilan Microsoft Access.


Salah satu keuntungan dari Microsoft Access bagi
programmer adalah kompatibilitasnya terhadap SQL (structured
query language) relatif tinggi. Pada Microsoft Access kita dapat
membuat query berbasis teks atau berbasis GUI kemudian dapat
langsung dieksekusi dengan mudah untuk mendapatkan hasil.

• MyQSL
MySQL adalah SQL-DBMS yang bersifat multi-user dan
multi-threaded. MySQL berjalan sebagai server yang melayani
banyak pengguna untuk mengakses sejumlah basis data. DBMS
ini sangat populer di dunia aplikasi berbasis web sebagai
komponen basis data. Selain karena tersedia dalam versi gratis,
popularitas MySQL juga sangat dipengaruhi oleh populernya web
server Apache dan bahasa pemrograman PHP. Istilah-istilah
Gambar 10.8. seperti LAMP (Linux-Apache-MySQL-PHP/Perl/Python), MAMP
Logo MySQL (Mac-Apache-MySQL-PHP/Perl/Python dan WAMP (Windows-
Apache-MySQL-PHP/Perl/Python menjadi sangat terkenal.
Banyak sekali aplikasi berbasis web yang dibangun dengan
Rekayasa Perangkat Lunak 265
menggunakan kombinasi perangkat lunak tersebut. WordPress,
Drupal, Mambo, Wikipedia, PHP-Nuke, merupakan beberapa
contoh aplikasi berbasis web yang menggunakan kombinasi ini.
Tidak seperti Microsoft Access, default instalasi MySQL
tidak menyediakan GUI bagi pengguna untuk berinteraksi
dengan basis data. Pengguna dapat berinteraksi dengan client
yang menggunakan perintah-perintah berbasis teks. Namun
saat ini telah banyak GUI yang dikembangkan untuk
mempermudah interaksi dengan basis data, baik itu berupa
aplikasi stand-alone (misalnya MySQL-Front, MySQL-GUI, dan
lain-lain) atau yang berbasis web (misalnya, phpMyAdmin).
Bahkan dengan menggunakan komponen MyODBC, MySQL
dapat diakses dengan GUI dari Microsoft Access seperti halnya
basis data yang kompatibel dengan ODBC lainnya.

Gambar 10.9. Tampilan awal phpMyAdmin.

• Microsoft SQL Server


Microsoft SQL Server adalah DBMS relational keluaran
dari Microsoft seperti halnya Microsoft Access. Bahasa query
Gambar 10.10. utama yang digunakan adalah varian dari ANSI SQL yang
Logo Microsoft disebut sebagai T-SQL (Transact-SQL). Bahasa ini
SQL Server membolehkan pengguna untuk membuat stored procedure
sehingga meningkatkan efisiensi akses ke basis data. DBMS ini
juga dilengkapi dengan fasilitas clustering dan mirroring. Cluster
adalah kumpulan dari server-server yang konfigurasinya identik
sehingga memungkinkan pembagian kerja antar server.
Sedangkan fasilitas mirroring membolehkan suatu DBMS untuk
membuat tiruan (replika) dari isi basis data secara lengkap untuk

266 Dasar-dasar Sistem Basis Data


digunakan pada server yang lain.
Microsoft SQL Server tersedia dalam beberapa versi
distribusi. Pada Microsoft SQL Server yang didistribusikan
bersama Microsoft Office atau Microsoft Visual Studio, biasa
disebut MSDE (Microsoft SQL Server Database Engine), tidak
dilengkapi dengan perangkat GUI. Pengguna dapat melakukan
interaksi dengan menggunakan client berbasis perintah teks
seperti halnya MySQL. Sedangkan pada versi yang lebih tinggi
seperti versi personal atau profesional telah tersedia fasilitas GUI
(Gambar 10.11).

Gambar 10.11. GUI pada Microsoft SQL Server

• PostgreSQL
PostgreSQL atau sering disebut Postgres termasuk dalam
kategori Object-Relational Database Management System
(ORDBMS). ORDBMS adalah DBMS yang selain menggunakan
prinsip-prinsip basis data relational juga menggunakan
pendekatan berorientasi obyek dalam model basis datanya.
Postgres dikembangkan sebagai free-software dan bersifat
terbuka (open-source) sehingga tidak dikendalikan oleh satu
Gambar 10.12. atau dua perusahaan.
Logo PostgreSQL
Kelebihan Postgres dibandingkan DBMS lainnya adalah,
sifatnya yang free dan open-source, dukungan dokumentasinya
Rekayasa Perangkat Lunak 267
yang luar biasa, fleksibilitasnya dan fitur-fiturnya yang tidak
kalah dengan DBMS komersial. Selain mendukung model data
object-relational, Postgres juga mendukung penggunaan basis
data spasial (biasanya untuk penggunaan Sistem Informasi
Geografis). Postgres juga mendukung operasi multi-user dan
multi-threaded, bahkan mungkin lebih bagus dari MySQL dari sisi
keamanan.
Seperti halnya MySQL dan Microsoft SQL Server, kita
dapat berinteraksi dengan basis data pada Postgres
menggunakan perintah-perintah disisi klien dengan tool yang
disebut psql. Antar muka yang bersifat GUI juga telah banyak
dikembangkan, diantaranya phpPgAdmin, PgAdmin, dan lain-
lain.

• Oracle Database
Nama Oracle Database atau Oracle RDBMS adalah nama
yang sangat diperhitungkan dalam dunia DBMS. Oracle
Gambar 10.13.
dikembangkan oleh Oracle Corporation.
Logo Oracle
Oracle menyimpan data secara logika dalam bentuk
tablespaces dan secara fisik dalam bentuk file-file data.
Tablespaces dapat berisi berbagai macam bagian memori,
misalnya bagian data, bagian index dan lain sebagainya.
Bagian-bagian ini berisi satu atau lebih area. Area-area ini berisi
kumpulan blok data yang berdekatan. Oracle dapat menyimpan
dan store procedure dan fungsi secara mandiri.

10.2. ENTITY-RELATIONSHIP DIAGRAM


Model E-R biasa digambarkan dalam bentuk diagram yang disebut Entity-
Relationship Diagram (ERD). ERD merupakan notasi grafis dalam pemodelan data
konseptual yang digunakan untuk memodelkan struktur data dan hubungan antar
data. Dengan ERD kita dapat menguji model dengan mengabaikan proses yang harus
dilakukan. Dan dengan ERD kita mencoba menjawab pertanyaan seperti; data apa
yang kita perlukan? bagaimana data yang satu berhubungan dengan yang lain? ERD
menggunakan sejumlah notasi dan simbol untuk menggambarkan struktur dan
hubungan antar data, pada dasarnya ada 3 macam simbol yang digunakan yaitu :
1. Entitas : Entitas digambarkan dalam bentuk persegi empat.

Gambar 10.14. Notasi entitas pada ER-Diagram

268 Dasar-dasar Sistem Basis Data


2. Atribut : Atribut digambarkan dalam bentuk ellips dan dihubungkan dengan
entitas dimana atribut tersebut berada.

Gambar 10.15. Penggunaan notasi atribut pada ER-Diagram.

3. Relationship: Relationship digambarkan dalam bentuk intan/diamonds.

Gambar 10.16. Penggunaan notasi relationship pada ER-Diagram.

10.2.1. Entitas
Entitas adalah individu yang mewakili sesuatu yang nyata (eksistensinya) dan
dapat dibedakan dari sesuatu yang lain. Dapat berupa suatu elemen dari suatu
lingkungan, suatu sumber daya atau sebuah transaksi yang memiliki arti penting bagi
suatu model yang akan dibangun.
Contoh Entitas set :
o Semua Guru atau Guru saja.
Himpunan ini memiliki anggota : Bapak Fahri, Ibu Fitri, Bapak Joko dan
guru-guru yang lain.
o Semua Siswa atau Siswa saja.
Himpunan ini memiliki anggota : Joni, Ridho, Fanny, Donny dan siswa-
siswa yang lain.

Rekayasa Perangkat Lunak 269


o Semua Mobil atau Mobil saja.
Himpunan ini memiliki anggota : mobil Daihatsu, mobil Toyota, mobil
Suzuki, dan mobil-mobil yang lain.
Mengidentifikasi ada atau tidaknya entitas dalam suatu masalah memang tidak
mudah. Tapi biasanya apabila kita menjumpai kata benda dalam permasalahan
tersebut maka kata tersebut biasanya merupakan kandidat entitas. Sebagai contoh
bila kita akan membangun basis data perpustakaan sekolah, maka kita akan
menjumpai buku, siswa, guru, petugas perpustakaan sebagai calon kuat entitas.

10.2.2. Atribut
Setiap entitas mempunyai atribut. Atribut adalah karakteristik atau ciri yang
membedakan antara entitas satu dengan entitas yang lainnya.
Contoh Atribut :
o Entitas Siswa.
Memiliki atribut antara lain: nis (nomor induk siswa), nama, alamat,
nomor telepon, tempat lahir, tanggal lahir dan lain-lain.

Gambar 10.17. Entitas siswa dan atributnya.

o Entitas Guru.
Memiliki atribut antara lain: NIP, nama, alamat, pangkat, nomor telepon,
tempat lahir, tanggal lahir, bidang keahlian, dan lain-lain.

270 Dasar-dasar Sistem Basis Data


Gambar 10.18. Entitas guru dan atributnya.

o Entitas Mobil.
Memiliki atribut antara lain: Nomor mesin, nomor rangka, warna, tahun
keluar, tipe mesin, bahan baker, dan lain-lain.

Gambar 10.19. Entitas mobil dan atributnya.

Tidak semua karakteristik dari entitas penting bagi suatu ruang lingkup
masalah. Sebagai contoh pada masalah basis data perpustakaan, karakteristik nomor
sepatu siswa bukanlah karakteristik yang penting yang dapat dijadikan sebagai

Rekayasa Perangkat Lunak 271


atribut. Tetapi apabila ruang lingkup masalahnya adalah basis data pemesanan
seragam sepatu siswa, maka nomor sepatu adalah atribut yang penting.
Selain memilih mana yang benar-benar penting bagi sebuah entitas, kita juga
harus menentukan mana yang akan menjadi atribut kunci (Primary Key).
Pada contoh di atas (contoh atribut) kita dapat dengan mudah menentukan
primary key dari entitas yang ada.
Contoh Atribut kunci (Primary key). :
o Entitas Siswa.
Misalkan atribut yang dimiliki adalah : NIS (nomor induk siswa), nama,
alamat, nomor telepon, tempat lahir, dan tanggal lahir. Dari keenam
atribut ini, maka yang paling cocok menjadi primary key adalah NIS
karena atribut ini yang paling unik. Tidak ada siswa yang memiliki NIS
yang sama. Nama masih mungkin sama, tapi NIS tidak.
o Entitas Guru.
Misalkan atribut yang dimiliki adalah: NIP, nama, alamat, pangkat, nomor
telepon, tempat lahir, tanggal lahir, dan bidang keahlian. Atribut yang
paling cocok menjadi primary key adalah NIP karena atribut ini yang
paling unik. Tidak ada guru yang memiliki NIP yang sama. Sehingga
NIP dapat dijadikan pengidentifikasi entitas guru.
o Entitas Mobil.
Misalkan atribut yang dimiliki adalah: Nomor mesin, nomor rangka,
warna, tahun keluar, tipe mesin, dan bahan baker. Di sini ada dua
atribut yang unik yaitu nomor mesin dan nomor rangka. Pada kasus ini
kita dapat memilih salah satu dari kedua atribut tersebut sebagai primary
key.
Sebagai panduan, berikut ini merupakan cirri-ciri dari atribut yang dapat
dipertimbangkan sebagai identifier (candidate key) :
o Niliainya tidak berubah-ubah
o Tidak mungkin berisi nilai null (kosong bukan nol)
o Tidak berisi data nama atau lokasi yang mungkin berubah-ubah.

10.2.3. Relationship
Relationship atau relasi adalah hubungan yang terjadi antara sejumlah entitas.
Misalkan dari entitas siswa ada seorang siswa yang memiliki NIS = “GHI007” dan
nama_siswa = “Donny” mempunyai relasi dengan entitas program keahlian dengan
kode_program = “RPL” dan nama_program = “Rekayasa Perangkat Lunak”. Relasi di
antara kedua entitas mengandung arti siswa tersebut sedang mengambil program
keahlian tersebut pada sekolah tertentu.

272 Dasar-dasar Sistem Basis Data


Gambar 10.20. Relationship.

Ramakrishnan and Gehrke (2000) menyebutkan bahwa konsep relationship


pada model E-R berbeda dengan konsep relation di dalam model data relasional.
Relationship adalah mekanisme yang menghubungkan antara entitas. Dalam
implementasi ke dalam DBMS baik entitas maupun relationship akan direpresentasikan
dalam bentuk tabel (relation).
Setiap relationship selalu mempunyai kardinalitas. Kardinalitas atau Derajat
Relasi menunjukkan jumlah maksimum entitas yang dapat berelasi dengan entitas lain
pada himpunan entitas yang lain.
Pada gambar 10.20 kita sebenarnya dapat melihat sebuah kardinalitas antara
himpunan entitas siswa dengan himpunan entitas program keahlian. Siswa dapat
berelasi hanya dengan satu entitas pada himpunan entitas program keahlian.
Sebaliknya satu entitas pada program keahlian dapat berelasi dengan banyak siswa.
Pada gambar tersebut terlihat Donny hanya dapat berhubungan dengan Rekayasa
Perangkat Lunak, sedangkan Rekayasa Perangkat Lunak dapat berhubungan dengan
Donny dan Joni.
Ada beberapa jenis tingkat hubungan (kardinalitas) antara entitas satu dengan
entitas lainnya. Kardinalitas menunjukkan jumlah maksimum entitas pada suatu
himpunan entitas yang dapat berelasi dengan entitas pada himpunan entitas yang
lain. Secara umum ada tiga bentuk kardinalitas antar himpunan entitas, yaitu :
o satu ke satu (one to one). Hubungan dengan kardinalitas one-to-one artinya
satu anggota suatu entitas set hanya boleh berhubungan dengan satu anggota
entitas set yang lain. Hubungan antara entitas set suami dengan istri dapat
dikelompokkan dalam hubungan one-to-one.’

Rekayasa Perangkat Lunak 273


Gambar 10.21. Hubungan one-to-one suami dan istri.

o satu ke banyak / banyak ke satu (one to many / many to one).


Kardinalitas satu ke banyak dan banyak ke satu dapat dianggap sama karena
tinjauan kardinalitas selalu dilihat dari dua sisi. Contohnya adalah pada suatu
sekolah mempunyai aturan satu kelas terdiri dari banyak siswa tetapi tidak
sebaliknya, yaitu satu siswa tidak dapat belajar pada kelas yang berbeda.

Gambar 10.22. Hubungan one-to-many kelas dengan siswa.

o banyak ke banyak (many to many). Kardinalitas ini cukup rumit untuk


dijelaskan namun seringkali kita jumpai. Misalnya hubungan siswa dengan mata
pelajaran memiliki kardinalitas many-to-many. Siswa berhak mengambil
(mempelajari) lebih dari satu matapelajaran dan setiap mata pelajaran boleh
diambil (dipelajari) lebih dari satu siswa.

10.3. BASIS DATA RELASIONAL

10.3.1. Model Basis Data Relasional


Model basis data relasional diperkenalkan pertama kali oleh E.F. Codd pada
tahun 1970. Model data ini didasarkan pada struktur matematis yang mudah dan
alami, yaitu relation (tabel). Operasi-operasi manipulasi data semuanya berakar pada
logika matematika. Hal ini menjadikan ekspresi-ekspresi pada tabel dapat dianalisis
dan dioptimasi (Lewis et al., 2002).
Pembentuk utama dalam model data relasional adalan relation (tabel).
Relation terdiri dari dua hal penting yaitu schema dan instance. Relation instance
tidak lebih dari sebuah tabel dua dimensi dengan baris dan kolom. Baris (row) biasa
disebut sebagai tuple, yang memiliki arti sama dengan record dalam suatu file. Tetapi
berbeda dengan file record, semua tuple memiliki jumlah kolom yang sama dan tidak
ada tuple dalam relation instance yang sama. Kolom dalam relation instance juga
dikenal sebagai attribute atau column (Ramakrishnan and Gehrke, 2000; Lewis et al.,
2002). Gambar 10.23. menunjukkan bagaimana hubungan tabel/file/relation,
274 Dasar-dasar Sistem Basis Data
row/record/tuple dan column/field/attribute. Gambar ini juga menunjukkan susunan
dari hubungan tersebut.

Gambar 10.23. Hubungan tabel/file/relation, row/record/tuple dan


column/field/attribute.

Relation schema terdiri dari nama dari relation, nama dari attribute yang ada
pada suatu relation beserta nama domainnya, dan integrity constrains. Nama dari
relation haruslah unik dalam suatu basis data, atau tidak boleh ada nama relation
yang sama. Nama attribute adalah nama kolom dari relation dan tidak ada nama
attribute yang sama pada suatu relation. Nama domain dari suatu attribute
berhubungan dengan tipe data yang digunakan oleh attribute tersebut. Integrity
constraints adalah batasan pada relational instances pada suatu schema
(Ramakrishnan and Gehrke, 2000; Lewis et al., 2002)
Rekayasa Perangkat Lunak 275
10.3.2. Struktur Basis Data Relasional
Seperti telah dijelaskan di atas sebuah tabel terdiri dari baris dan kolom.
• Row/Baris/Tuple
Row/Baris/Tuple adalah sekumpulan atribut yang saling berhubungan dalam
satu baris (lihat Gambar 10.23). Row ini akan selalu berulang dengan struktur yang
sama namun dengan isi data yang berbeda. Sebagai contoh, pada Gambar 10.23,
row pertama memiliki struktur yang sama dengan row yang ke 2 dan ke 3. Namun
data pada masing-masing row berbeda. Kita dapat mengidentifikasi untuk pembeli
dengan id_pembeli = 1 pasti memiliki nama = Cristiano Ronaldo dan untuk
id_pembeli = 2 pasti memiliki nama = Ryan Giggs, demikian seterusnya.

• Field/Kolom/Attributes
Field/Kolom/Attributes menunjukkan struktur dari data dari baris-baris yang
berulang. Pada Gambar 10.23, terdapat 4 kolom, yaitu id_pembeli, nama, alamat,
dan telepon. Data pada kolom id_pembeli misalnya, akan memiliki struktur yang
sama, yaitu dalam bentuk angka dan merupakan urutan id pembeli . Demikian juga
pada kolom nama yang hanya berisi nama pembeli saja, tidak bercampur dengan
data lain.
Sebuah kolom harus memiliki nama kolom dan tipe data untuk data yang
berada dalam kolom tersebut (Gambar 10.24). Selain itu, kadang-kadang juga ada
pembatas (constraint) dan domain untuk data yang termasuk dalam kolom tersebut.
Tipe data akan sangat bergantung pada atribut yang digunakan dan operasi-operasi
yang akan dilakukan pada basis data ini. Domain data memiliki banyak kesamaaan
pengertian dengan fungsi tipe data yang digunakan. Namun, tipe data lebih
merujuk pada kemampuan penyimpanan data yang mungkin bagi suatu atribut
secara fisik, tanpa melihat layak tidaknya data tersebut bila dilihat dari pemakaian di
dunia nyata. Sementara domain data lebih ditekankan pada batas-batas nilai yang
diperbolehkan bagi suatu atribut, dilihat dari kenyataan pemakaiannya.

276 Dasar-dasar Sistem Basis Data


Gambar 10.24. Kolom, constrain dan tipe data (Powell, 2006).

Pada Gambar 10.24 terlihat nama-nama kolom pada sebuah tabel lengkap
dengan tipe data dan constrainnya. Kolom ISBN misalnya bertipe data integer,
artinya kolom ini hanya boleh diisi dengan bilangan integer. Selain itu kolom ini
memiliki constrain no null, yang berarti ketika mengisikan data, kolom ini harus
selalu terisi tidak boleh dikosongkan. Pada kolom Pages, tipe datanya adalah date,
artinya hanya boleh berisi data berbentuk tanggal. Kolom Pages tidak memiliki
constrain null, artinya kolom ini boleh diisi atau tidak diisi.
Jenis-jenis tipe data tergantung pada DBMS yang digunakan. Sebagai contoh
MySQL memberikan jenis-jenis tipe data yang lebih luas dari pada Microsoft Access.
Pada MySQL misalnya, kita akan menjumpai tipe data set, enum yang tidak dijumpai
dalam Microsoft Access. Pemilihan tipe data yang tepat sangat penting karena
mempengaruhi konsistensi data dan kinerja basis data.
Contoh domain adalah, apabila kita berhadapan dengan atribut / kolom
tentang kelas pada Sekolah Dasar (SD). Kolom kelas ini hanya boleh diisi data
angka 1 sampai dengan 6, karena tidak ada kelas 7 atau 4.5 di SD. Artinya domain
kolom kelas adalah bilangan integer (bulat dan tidak ada pecahan) antara 1 sampai
dengan 6 saja. Contoh lainnya adalah kolom nilai ujian, kolom ini domainnya adalah
bilangan asli (real dan boleh pecahan) antara 0 sampai dengan 100.
Ada beberapa tipe atribut, yaitu:
o Atribut sederhana (Simple Attribute), yaitu atribut atomic yang tidak
dapat dipecah lagi.

Rekayasa Perangkat Lunak 277


Gambar 10.25. Contoh atribut sederhana

o Atribut komposit (Composit Attribute), yaitu atribut yang masih dapat


dipecah lagi menjadi sub-sub atribut yang masing-masing memiliki
makna.

Gambar 10.26. Contoh atribut komposit.

o Atribut bernilai tunggal (Single-Valued Attribute), yaitu atribut yang


memiliki paling banyak satu nilai untuk setiap baris data.
o Atribut bernilai banyak (Multi-Valued Attribute), yaitu atribut yang dapat
berisi lebih dari satu nilai tetapi dengan jenis yang sama.

278 Dasar-dasar Sistem Basis Data


Gambar 10.27. Contoh atribut bernilai tunggal dan atribut bernilai banyak.

o Atribut turunan (Derived Attribute), yaitu atribut yang nilai-nilainya


diperoleh dari hasil pengolahan atau dapat diturunkan dari atribut atau
tabel lain yang berhubungan.

10.3.3. Relasi Antar Tabel


Keistimewaan utama basis data relasional dibandingkan model basis data
lainnya adalah kemudahan dalam membangun hubungan antar tabel dalam bentuk
yang masuk akal dapat dimengerti. Relasi antar tabel dapat kita turunkan langsung
ataupun tak langsung dari ER-Diagram yang telah dibahas sebelumnya. Entitas yang
ada pada ER-Diagram biasanya merupakan kandidat dari suatu tabel pada basis data
relasional. Relasi antar tabel biasanya dapat diidentifikasi dari relationship antar
entitas pada ER-Diagram.
Untuk memperjelas bagaimana basis data relasional menangani hubungan
antar tabel kita akan menggunakan tabel-tabel berikut ini. Tabel pertama adalah
Pengarang. Tabel ini terdiri dari 3 kolom yaitu id_pengarang, pengarang dan
tahun_lahir (Gambar 10.28). Pada tabel ini id_pengarang merupakan primary key.

Gambar 10.28. Tabel Pengarang.

Rekayasa Perangkat Lunak 279


Tabel kedua adalah Penerbit. Tabel ini mempunyai 6 kolom yaitu, id_penerbit,
nama, nama_perusahaan, alamat, kota dan telepon (Gambar 10.29). Primary key
pada tabel ini adalah id_penerbit.

Gambar 10.29. Tabel Penerbit.

Tabel ketiga adalah Buku. Tabel ini mempunyai 6 kolom yaitu, judul,
tahun_terbit, ISBN, id_penerbit, deskripsi, dan kelompok (Gambar 10.30). Primary
key pada tabel ini adalah ISBN. Ada yang sedikit aneh pada tabel ini, yaitu kolom
id_penerbit yang merupakan salah satu kolom pada tabel Penerbit, dimasukkan dalam
tabel ini. Sebenarnya ini bukan keanehan atau kesalahan, tetapi memang beginilah
salah satu cara basis data relasional menangani hubungan antar tabel.

Gambar 10.30 Tabel buku.

Dalam dunia nyata, kita akan menjumpai bahwa satu penerbit tidak hanya
menghasilkan satu judul buku saja, tetapi ratusan bahkan mungkin jutaan judul buku.
Sehingga secara formal hubungan antara penerbit dengan buku dapat dinyatakan
sebagai hubungan dengan kardinalitas one-to-many. Jika digambarkan dalam bentuk
ER-Diagram akan tampak seperti Gambar 10.31. Satu penerbit dapat menerbitkan
banyak judul buku dan satu judul buku hanya diterbitkan oleh satu penerbit. Untuk

280 Dasar-dasar Sistem Basis Data


lebih memperjelas perhatikan Gambar 10.31. Penerbit dengan id_penerbit = 13
(McGraw Hill) menerbitkan 6 buah buku. Sebaliknya buku dengan ISBN = 0-0702063-
1-7 (Guide To Oracle) hanya diterbitkan oleh penerbit dengan id_penerbit = 13
(McGraw Hill). Sehingga penempatan kolom id_penerbit pada tabel buku
dimaksudkan untuk merepresentasikan hubungan Penerbit dengan Buku. Kolom
id_penerbit pada tabel buku biasa disebut sebagai foreign key.

Gambar 10.31. ER-Diagram untuk Penerbit dan Buku

Gambar 10.32. Hubungan tabel Penerbit dan Buku.

Rekayasa Perangkat Lunak 281


Pada tabel-tabel yang telah dibuat di atas kita belum melihat tabel yang
menunjukkan seorang pengarang tertentu mengarang buku apa. Untuk membuat
tabel yang berisi pengarang dan buku karangannya, kita dapat menggunakan
hubungan antara tabel pengarang dengan tabel buku. Namun sebelum itu kita harus
melihat bagaimana hubungan antara pengarang dengan buku di dunia nyata.
Seorang pengarang mungkin hanya mengarang satu judul buku, tetapi mungkin juga
lebih. Sedangkan satu buku, mungkin ditulis hanya oleh satu orang pengarang, tetapi
mungkin juga ditulis oleh dua, tiga atau lebih pengarang. Sehingga kita bisa
mengatakan kardinalitas hubungan pengarang dengan buku adalah many-to-many.
Kita dapat menggambarkan ER-Diagram untuk kasus ini seperti pada gambar 10.33.

Gambar 10.33. ER-Diagram untuk Pengarang – Buku.

Pada kasus dengan kardinalitas many-to-many kita tidak dapat langsung


menyisipkan satu foreign key pada tabel lain. Kita harus membuat tabel baru agar
kardinalitas antar tabel yang terlibat dapat diubah menjadi one-to-many. Tabel
Pengarang_Buku merupakan tabel yang dibentuk untuk menangani hubungan tabel
Buku dengan tabel Pengarang. Tabel ini hanya berisi dua atribut (kolom) yaitu ISBN
yang berasal dari tabel Buku dan id_pengarang yang berasal dari tabel Pengarang.
Pada Gambar 10.34, terlihat pada tabel Pengarang_Buku ada beberapa buku yang
dikarang lebih dari satu pengarang.

282 Dasar-dasar Sistem Basis Data


Gambar 10.34. Hubungan tabel Pengarang dan Buku.

Gambar 10.35. Relasi antar tabel.

10.4. RINGKASAN
• Basis data (database) merupakan kumpulan dari data yang saling berhubungan
satu dengan yang lainnya, tersimpan dalam perangkat keras komputer dan
digunakan perangkat lunak untuk memanipulasinya.

Rekayasa Perangkat Lunak 283


• Operasi dasar basis data meliputi pembuatan basis data baru, penghapusan
basis data, pembuatan tabel baru, penghapusan tabel, pengisian atau
penambahan data baru, pengambilan data, pengubahan data, penghapusan
data.
• Sistem Manajemen Basis Data merupakan perangkat lunak yang bekerja khusus
untuk menangani basis data.
• Entity-Relationship Diagram merupakan notasi grafis dalam pemodelan data
konseptual yang digunakan untuk memodelkan struktur data dan hubungan
antar data. Elemen dari ERD adalah entitas, atribut, relationship dan
kardinalitas.
• Pembentuk utama dalam model data relasional adalan relation (tabel). Relation
instance adalah sebuah tabel dua dimensi dengan baris (row/record/tuple) dan
kolom (column/field/attribute).
• Pada basis data relasional, identifikasi yang tepat pada hubungan antar atribut
di dalam satu tabel dan hubungan antar tabel merupakan kunci membuat basis
data yang baik.

10.5. SOAL-SOAL LATIHAN


1. Berkunjunglah ke perpustakaan sekolah, kemudian buatlah pengamatan
singkat. Buatlah catatan untuk menentukan siapa dan apa yang terlibat dalam
kegiatan perpustakaan sekolah. Cermatilah mana yang bisa digolongkan
sebagai entitas, atribut. Dan bagaimana hubungan antar entitas.
2. Dari hasil kegiatan no. 1 kemudian buatlah tabel-tabel yang menunjukkan
entitas dan hubungannya. Tentukan pula atribut dari masing-masing tabel.
3. Cermati pula tipe-tipe atribut yang telah kalian tentukan.

284 Dasar-dasar Sistem Basis Data


Gambar 11.1. Microsoft Access 2007.

Gambar di atas adalah tampilan awal dari Microsoft Access terbaru yaitu versi
2007. Perangkat lunak yang termasuk dalam Micosoft Office Suite ini mungkin
perangkat lunak yang jarang digunakan orang meskipun telah tersedia pada paket
Micosoft Office. Padahal perangkat lunak ini sangat bermanfaat banyak bila
digunakan.
Bab ini membahas dua standar kompetensi yaitu mengoperasikan aplikasi basis
data dan membuat aplikasi berbasis Microsoft Access. Standar kompetensi
mengoperasikan aplikasi basis data terdiri dari tiga kompetensi dasar, yaitu
menjelaskan menu aplikasi basis data, membuat tabel dan membuat view atau query.
Sedangkan standar kompetensi membuat aplikasi berbasis Microsoft Access terdiri
dari empat kompetensi dasar, yaitu menjelaskan Database Management System,
menjelaskan Data Definition Language, menerapkan query dan menerapkan reporting.
Database Management System telah kita bahas pada Bab 10, sedangkan Data
Definition Language akan kita bahas pada Bab 12. Sebelum mempelajari kompetensi
ini ingatlah kembali tentang prinsip pemecahan masalah, sistem operasi, dan dasar-
dasar basis data pada bab-bab sebelumnya.
Rekayasa Perangkat Lunak 285
TUJUAN
Setelah mempelajari bab ini diharapkan pembaca akan mampu :
o Menjelaskan menu-menu umum aplikasi basis data
o Membuat Tabel
o Membuat dan menerapkan View / Query
o Membuat Form
o Membuat Report

11.1. MENU-MENU UMUM APLIKASI BASIS DATA


Seperti telah disebutkan pada bab sebelumnya, Microsoft Access adalah DBMS
keluaran dari Microsoft. Versi terbaru dari Access adalah versi 2007 yang termasuk
dalam aplikasi Microsoft Office 2007. Format data default untuk versi terbaru ini
berbeda dengan versi sebelumnya. Ekstension file sebelumnya adalah .mdb, namun
sekarang berganti dengan .accdb. File basis data yang dibuat oleh versi terbaru ini
tidak dapat dibaca oleh versi sebelumnya. Namun versi terbaru ini dapat membaca
file basis data versi sebelumnya.
Untuk memulai Microsoft Access, kita dapat melakukan klik Start pada Windows
pilih Programs lalu pilih Microsoft Access. Tampilan awal Microsoft Access akan
tampak seperti Gambar 11.2. Microsoft Access memberikan beberapa opsi dalam
pembuatan basis data seperti tampak pada Gambar 11.2. Namun opsi yang paling
sering kita gunakan adalah Blank database. Apabila kita klik pada bagian ini maka
akan muncul permintaan untuk mendefinisikan basis data seperti terlihat pada
Gambar 11.3. Nama dan lokasi penyimpanan basis data harus ditentukan.

Gambar 11.2. Tampilan awal Microsoft Access.


286 Aplikasi Basis Data berbasis Microsoft Access.
Gambar 11.3. Penentuan nama dan lokasi basis data.

Setelah kita tekan tombol Create berarti kita telah mempunyai sebuah basis
data, namun masih belum terisi tabel atau data apapun (Gambar 11.4). Pada gambar
tersebut dapat kita lihat nama file basis data adalah latihan01 dan format file basis
data menggunakan Access 2000. Pada gambar tersebut juga tampat bagian bagian
(object) basis data tersebut.

Gambar 11.4. Bagian-bagian sebuah basis data pada Microsoft Access.

Rekayasa Perangkat Lunak 287


Ada enam obyek penting Access yang menjadi fitur utama dari DBMS ini, yaitu:
• Table. Tabel adalah tempat dimana kita menyimpan data. Semua tabel di
dalam Access mengikuti aturan basis data relasional yang terdiri dari baris dan
kolom. Setiap basis data bisa berisi lebih dari satu tabel.
• Queries. Fitur queries disediakan untuk memilih data yang akan kita tampilkan.
Queries pada Access disediakan baik dalam bentuk GUI maupun dalam bentuk
bahasa SQL.
• Forms. Fitur form disediakan untuk membuat tampilan dari basis data yang
dibuat menjadi lebih menarik. Baik ketika mengedit data maupun tampilan
output data di layar monitor.
• Reports. Fitur ini disediakan untuk membuat format pencetakan pada media
kertas melalui printer.
• Macros. Fitur macro merupakan fitur yang digunakan untuk menyimpan
perintah-perintah otomatis tertentu yang berhubungan dengan basis data yang
dibuat. Dibutuhkan kemampuan pemrograman untuk menggunakan fasilitas
ini.
• Modules. Fitur ini lebih luas dari macro karena kita dapat melakukan
pemrograman pada banyak aspek dalam Microsoft Access.
Selain obyek-obyek utama di atas Microsoft Access juga menyediakan
seperangkat alat untuk mendukung kemudahan dalam membuat basis data dan
aplikasinya. Berikut ini gambar-gambar toolbar pada Microsoft Access beserta
kegunaannya.

Gambar 11.5. Toolbar pada menu Create.

288 Aplikasi Basis Data berbasis Microsoft Access.


Gambar 11.6. Toolbar pada menu External Data.

Gambar 11.7. Toolbar pada menu Database Tool.

Pada buku ini kita akan mempelajari empat buah obyek yaitu, tabel, query,
form dan report. Namun, sebelum kita memulai dengan pembahasan tentang
bagaimana menggunakan obyek-obyek dalam Microsoft Access tersebut, kita akan
sekilas membahas tentang contoh kasus basis data yang akan kita buat. Kasus yang
akan kita buat adalah Basis Data Penjualan Buku. Pada kasus ini setiap pembeli akan
melakukan pembelian terhadap buku yang diinginkan dan membayar sejumlah uang
sesuai buku yang dibeli. Data pembeli akan dicatat. Demikian juga setiap data
pesanan, baik itu pemesanan ringkasan maupun item-item pemesanannya. Data
pesanan berisi pembeli yang melakukan pemesanan, total pembelian dan tanggal
pembelian. Sedangkan data item pemesanan berisi data buku yang dipesan dan
jumlahnya untuk tiap pemesanan.
Dengan membaca kasus di atas, maka apabila kita akan membuat ER
Diagramnya maka langkah pertama adalah identifikasi kandidat entitas yang terlibat.
Dari teks di atas kita dapat mengidentifikasi ada minimal 4 kandidat entitas yaitu
pembeli, buku, pesanan dan item pemesanan. Sedangkan relasinya dapat kita
identifikasi sebagai berikut :
o pembeli melakukan pemesanan
o pada setiap pesanan terdapat item-item pesanan

Rekayasa Perangkat Lunak 289


o pada item-item pesanan terdapat daftar buku-buku yang dipesan.
Atribut-atribut untuk masing-masing kandidat entitas dapat kita tentukan
sebagai berikut:
o Entitas Pembeli dengan atribut id_pembeli, nama, alamat, dan telepon.
o Entitas Buku dengan atribut nomor ISBN, pengarang, dan judul
o Entitas Pesanan dengan atribut id_pesanan, jumlah pembelian, tanggal
pembelian.
o Entitas Item Pemesanan dengan atribut jumlah masing-masing buku yang
dipesan.
Setelah semua informasi lengkap maka kita dapat menggambarkan ER
Diagram untuk kasus di atas seperti pada Gambar 11.8.

Gambar 11.8. ER Diagram untuk kasus Basis Data Penjualan Buku.

Berdasarkan ER Diagram di atas kita dapat menentukan tabel-tabel apa yang


dibutuhkan pada basis data penjualan buku. Ada empat tabel yaitu: tabel pembeli,
buku, pesanan, dan item pesanan. Untuk mengakomodasi relasi yang ada pada ER
Diagram, maka akan dibuat atribut-atribut yang berperan sebagai perwujudan relasi.
Tabel 11.1 menunjukkan tabel dan atribut yang ada pada basis data penjualan buku.

290 Aplikasi Basis Data berbasis Microsoft Access.


Tabel 11.1. Tabel dan atribut pada Basis Data Penjualan Buku.
Tabel Atribut Keterangan
Pembeli o id_pembeli Id_pesanan adalah atribut kunci (primary key)
o nama karena bersifat unik.
o alamat
o telepon
Buku o isbn Isbn adalah primary key karena bersifat unik
o pengarang
o judul
Pesanan o id_pesanan Id_pesanan adalah primary key karena bersifat
o id_pembeli unik. Sedangkan id_pembeli adalah atribut
o jumlah_pembelian penghubung (foreign key) entitas Pembeli dengan
o tanggal_pembelian Pesanan. Hal ini merupakan perwujudan dari
relasi Pembeli melakukan Pesanan.
Item_Pesanan o id_pesanan Id_pesanan dan isbn secara bersama-sama adalah
o isbn primary key untuk tabel ini. Id_pesanan sendiri
o jumlah adalah foreign key sebagai perwujudan relasi
Pesanan terdiri dari Item_Pesanan. Sedangkan
isbn adalah perwujudan relasi Buku berada dalam
Item_Pesanan.

Tabel 11.1 dapat kita lengkapi dengan tipe data dan constraint/domain seperti
pada Tabel 11.2. Hal ini untuk mempermudah pembuatan tabel pada DBMS. Apabila
kita memeriksa apakah tabel-tabel yang terbentuk sudah dalam bentuk normal atau
belum, maka kita akan menjumpai semua tabel sudah dalam bentuk normal bentuk
ketiga (3NF).
Tabel 11.2. Tabel, atribut, tipe data dan constraint/domain pada Basis Data
Penjualan Buku.
Tabel Atribut Tipe Data Constraint/Domain
Pembeli o id_pembeli Integer Not Null
o nama Char/Text (30)
o alamat Char/Text (60)
o telepon Char/Text (15)
Buku o isbn Char/Text (15) Not Null
o pengarang Char/Text (30)
o judul Char/Text (50)
o harga Real/Float (10,2)
Pesanan o id_pesanan Integer Not Null
o id_pembeli Integer Not Null
o jumlah_pembelian Real/Float (10,2)
o tanggal_pembelian Date
Item_Pesanan o id_pesanan Integer Not Null
o isbn Char/Text (30) Not Null
o jumlah Integer Not Null dan > 0

Rekayasa Perangkat Lunak 291


11.2. TABEL
Ketika kalian selesai membuat file basis data (lihat Gambar 11.3 dan 11.4, kita
sudah punya sebuah basis data namun belum berisi apa-apa karena kita belum
membuat tabel-tabel dalam basis data tersebut. Seperti telah dijelaskan pada Bab 10,
tabel akan berisi kolom dan baris. Kolom di sebut field dan baris disebut record dalam
Microsoft Access.

11.2.1 Pendefinisian Field dan Tipe Data.


Tahap pertama dalam membuat tabel adalah mendefinisikan field-field yang
dibutuhkan baru kemudian mengisi baris-baris data.
Langkah-langkah pembuatan tabel adalah sebagai berikut:
1. Pada jendela Database click pada Table (Gambar 11.9).
2. Double click pada Create table in Design View (Gambar 11.9). Kemudian akan
muncul jendela untuk mendefinisikan field-field yang dibutuhkan (Gambar 11.9)

Gambar 11.9. Tahap awal pembuatan tabel.

3. Kita dapat mulai memasukkan field-field yang dibutuhkan. Untuk contoh awal
kita akan memasukkan field-field untuk tabel Pembeli seperti yang sudah
didefinisikan pada Tabel 11.2. Perhatikan Gambar 11.10 berikut ini.

292 Aplikasi Basis Data berbasis Microsoft Access.


Gambar 11.10. Pendefinisian field, tipe data, constraint dan domain.

Microsoft Access menyediakan fasilitas yang sangat baik untuk mendefinisikan


field-field suatu tabel. Pada Gambar 11.10 tampak proses pendefinisian field.
Bagian atas adalah untuk menentukan nama field, tipe data dan keterangan.
Sedangkan bagian bawah merupakan tempat menentukan lebar data, format,
domain atau constraint dari suatu tipe data. Pada gambar tersebut terlihat
bahwa field nama didefinisikan bertipe data teks, dengan lebar data 30 (lihat
bagian bawah gambar).
4. Setelah semua field untuk tabel pembeli selesai didefinisikan maka kita harus
menentukan field mana yang berperan sebagai primary key. Pada penjelasan
kasus di atas kita sudah menetapkan bahwa id_pembeli akan menjadi primary
key. Pilih / sorot baris id_pembeli, kemudian click tombol bergambar kunci
(Gambar 11.11) pada toolbar Microsoft Access.

Gambar 11.11. Toolbar Microsoft Access.

5. Kita dapat menyimpan tabel yang sudah kita definisikan dan memberi nama tabel
tersebut dengan cara menekan tombol bergambar disket (lihat Gambar 11.11).

Rekayasa Perangkat Lunak 293


Kemudian kita dapat menutup jendela Design View tersebut. Dengan cara yang
sama, tabel-tabel lainnya yaitu tabel buku, tabel pesanan, dan tabel
item_pesanan dapat kita definisikan. Gambar-gambar berikut menunjukkan hasil
pendefinisian keseluruhan tabel.

Gambar 11.12. Struktur tabel pembeli.

Gambar 11.13. Struktur tabel buku.

Gambar 11.14. Struktur tabel pesanan.

Gambar 11.15. Struktur tabel item_pesanan.

294 Aplikasi Basis Data berbasis Microsoft Access.


11.2.2. Pengisian Data Pada Tabel.
Tabel-tabel yang telah kita buat di atas, belum mempunyai isi data apa-apa.
Hanya strukturnya yang telah kita buat. Untuk mengisikan data pada tabel, caranya
cukup mudah, yaitu: double click pada nama tabel yang kita ingin isikan datanya.
Setelah terbuka jendela seperti pada Gambar 11.16, kita dapat segera mengisikan
datanya. Cara pengisian datanya sama seperti kalau kita bekerja dengan Microsoft
Excell atau software spreadsheet lainnya. Kemudian kita dapat menyimpan hasil
pengisian data dengan menekan tombol bergambar disket pada toolbar.

Gambar 11.16. Hasil pengisian data pada tabel pembeli.

Gambar 11.16 menunjukkan isi data pada tabel pembeli. Dengan cara yang
sama kita dapat mengisikan data pada tabel-tabel lain. Perhatikan hasil pengisian
data pada gambar-gambar berikut.

Gambar 11.17. Hasil pengisian data pada tabel buku.

Gambar 11.18. Hasil pengisian data pada tabel pesanan.

Rekayasa Perangkat Lunak 295


Gambar 11.19. Hasil pengisian data pada tabel item_pesanan.

11.3. QUERY
Pada bagian ini kita akan menerapkan teori-teori query yang telah kita telah
singgung sebelumnyanya. Seperti telah dijelaskan, query adalah 'permintaan data'.
Dengan query kita dapat menampilkan data-data tertentu dari satu atau lebih tabel,
atau melakukan perhitungan pada data di dalam tabel. Namun sebelum mempelajari
bagaimana membuat query, kita akan pelajari dulu bagaimana membuat relasi antar
tabel agar ketika membuat query menjadi lebih mudah.

11.3.1. Membuat Relasi Antar Tabel.


Pada Gambar 11.8, kita telah mendefinisikan hubungan antar entitas dalam
ER Diagram. Gambar ini merupakan dasa dalam membuat relasi antar tabel. Untuk
membuat relasi antar tabel, pilih menu Tools kemudian Relationship sehingga akan
muncul jendela seperti pada Gambar 11.20. Pada jendela relationships tersebut klik
kanan sehingga muncul menu pilihan dan pilih Show Tabel. Setelah muncul jendela
seperti Gambar 11.21, kita dapat mulai menentukan tabel mana saja yang akan kita
relasikan.

Gambar 11.20. Jendela Relationships. Gambar 11.21. Jendela Show Table.

296 Aplikasi Basis Data berbasis Microsoft Access.


Pada Gambar 11.21, pilih tabel yang akan direlasikan kemudian click tombol
Add. Setelah selesai proses pemilihan click tombol Close. Pada kasus yang akan
kita terapkan ini keempat tabel itu berhubungan langsung maupun tidak langsung.
Sehingga kita memilih seluruh tabel untuk direlasikan. Gambar 11.22 menunjukkan
hasil pemilihan tabel pada jendela Relationships. Pada gambar ini yang diperlihatkan
adalah struktur dari masing-masing tabel, bukan isinya. Nama kolom yang dicetak
tebal menunjukkan kolom tersebut adalah primary key. Kita dapat mengatur posisi
tabel dengan cara drag & drop.

Gambar 11.22. Tabel-tabel yang akan direlasikan.

Untuk membuat relasi antar tabel, dapat dilakukan dengan memilih primary
key pada suatu tabel kemudian seret mouse menuju key dengan nama yang sama
pada tabel lainnya (foreign key pada tabel lain). Sebagai contoh pada tabel pembeli,
primary key – nya id_pembeli dan pada tabel pesanan, id_pembeli adalah foreign key.
Click id_pembeli pada tabel pembeli kemudian seret mouse menuju id_pembeli pada
tabel pesanan. Apabila prosedur ini benar dilakukan, maka akan muncul jendela
seperti Gambar 11.23. Click pada bagian Enforce Referential Integrity dan click
tombol Create. Kita dapat melakukan prosedur ini pada relasi-relasi yang lain.
Sehingga pada jendela Relationships akan tampak seperti pada Gambar 11.24.

Gambar 11.23. Jendela untuk edit relationships

Rekayasa Perangkat Lunak 297


Gambar 11.24. Relasi untuk keseluruhan tabel.

Gambar 11.24 menunjukkan relasi antar tabel yang dapat kita bandingkan
dengan ER Diagram pada Gambar 11.8. Pada relasi antar tabel ini, kita juga
menentukan kardinalitas antar tabel. Perhatikan pada garis yang menghubungkan
tabel pembeli dengan pesanan. Di ujung yang berada pada tabel pembeli ditandai
dengan angka 1 dan di ujung yang ada pada tabel pesanan ditandai dengan notasi ∞.
Hal ini menunjukkan adanya hubungan one-to-many antara tabel pembeli dengan
tabel pesanan. Demikian juga dengan relasi antar tabel yang lain.

11.3.2. Membuat Query


Microsoft Access menyediakan fasilitas query yang sangat baik dan
memudahkan pengguna. Selain karena berbasis GUI juga prosedurnya tidak terlalu
rumit. Berikut contoh-contoh membuat query di Microsoft Access.
o Query pada satu tabel
Query pada satu tabel hanya akan melibatkan satu tabel saja. Misalkan kita akan
melakukan query pada tabel buku. Prosedur yang ditempuh adalah sebagai
berikut:
1. Pada jendela Database pilih Query lalu klik dua kali Create Query In Design
View. Sehingga akan muncul jendela seperti pada Gambar 11.25. Pilih tabel
buku pada jendela Show Tabel, kemudian click Add dan kemudian Close.
Jendela Show Table akan tertutup dan kita dapat mulai melakukan query.

298 Aplikasi Basis Data berbasis Microsoft Access.


Gambar 11.25. Jendela query pada mode design view.

2. Pada jendela Query bagian bawah (lihat Gambar 11.25), ada beberapa hal
penting yang harus diketahui dan berguna dalam query yaitu
Field : Nama Field yang ingn ditampilkan
Tabel : Nama Tabel dari Filed tersebut
Sort : Mengurutkan Data hasil query
Show : Mengatur Field ditampikan atau tidak
Criteria : Syarat dari data yang ingin ditampilkan

3. Contoh query yang pertama adalah bagaimana menampilkan semua data,


misalnya:
Tampilkan semua data yang ada di tabel buku.
Untuk menampilkan seluruh data pada tabel buku, pada Field, click tombol
panah ke bawah pilih buku.* (lihat Gambar 11.26). Kita dapat
mengeksekusi query dengan memilih menu Query kemudian click Run, atau
click langsung tombol tanda seru ( ) yang ada di toolbar. Hasil query
dapat dilihat pada Gambar 11.26. Simpan query dengan nama yang
diinginkan (misalnya: query_buku_semua_data) kemudian tutup jendela
Query.

Rekayasa Perangkat Lunak 299


Gambar 11.26. Prosedur dan hasil query tabel buku.

4. Contoh query yang kedua adalah memilih kolom mana saja yang akan
ditampilkan, misalnya :
Tampilkan semua nama pengarang dan judul buku yang dikarangnya
Query ini tidak menampilkan seluruh data tetapi hanya data dari kolom
pengarang dan judul buku saja. Pada Gambar 11.27 terlihat bagaimana
query dilakukan. Tabel buku tetap dipilih dari jendela Show Table, kemudian
di jendela Query, pada bagian Field dipilih field pengarang dan judul. Hasil
eksekusi query adalah daftar nama seluruh pengarang dan buku yang
dikarangnya.

300 Aplikasi Basis Data berbasis Microsoft Access.


Gambar 11.27. Query nama pengarang dan bukunya.

5. Contoh query yang ketiga adalah bagaimana membuat tampilan data urut
sesuai yang dikehendaki, misalnya:
Tampilkan semua judul buku dan harganya dengan urutan harga yang
paling mahal lebih dahulu
Query ini juga tidak menampilkan seluruh data tetapi hanya data dari judul
buku dan harga saja. Namun urutan tampilan dirubah. Pada Gambar 11.28
terlihat bagaimana query dilakukan. Tabel buku tetap dipilih dari jendela
Show Tabel, kemudian di jendela Query, pada bagian Field dipilih field judul
dan harga. Pada bagian Sort, pada kolom yang sama dengan harga, kita
gunakan opsi Descending untuk mengurutkan dari besar ke kecil. Hasil
eksekusi query adalah daftar seluruh judul buku dan harganya dengan urutan
judul buku yang berharga paling mahal di atas.. Bandingkan urutan baris pada
hasil dengan hasil query pada Gambar 11.26.

Rekayasa Perangkat Lunak 301


Gambar 11.28. Query judul buku dan harga dengan urutan.

6. Contoh query yang ketiga adalah bagaimana memilih baris-baris mana saja
yang akan ditampilkan, misalnya:
Tampilkan semua judul buku yang pengarangnya adalah Harry
Redknapp.
Query ini juga hanya berhubungan dengan data dari field judul buku dan
pengarang saja. Namun tidak seluruh judul, tetapi hanya judul buku yang
ditulis ‘Harry Redknapp’. Pada Gambar 11.28 terlihat bagaimana query
dilakukan. Tabel buku tetap dipilih dari jendela Show Tabel, kemudian di
jendela Query, pada bagian Field dipilih field nama pengarang dan judul.
Pada bagian criteria, kita masukkan criteria yang kita maksudkan, yaitu =
‘Harry Redknapp’. Hasil eksekusi query adalah daftar seluruh judul buku yang
ditulis ‘Harry Redknapp’.

Gambar 11.29. Query dengan criteria tertentu.

302 Aplikasi Basis Data berbasis Microsoft Access.


7. Contoh query yang ketiga adalah bagaimana kita menggunakan operator
pada kriteria, misalnya:
Tampilkan semua judul buku yang pengarangnya adalah Harry
Redknapp dan Arsene Wenger.
Seperti pada no 6, query ini juga hanya berhubungan dengan data dari field
judul dan pengarang saja. Namun tidak seluruh judul, tetapi hanya judul
buku yang ditulis secara bersama oleh ‘Harry Redknapp dan Arsene Wenger’.
Pada Gambar 11.30 terlihat bagaimana query dilakukan. Gunakan cara yang
sama seperti pada no 6, hanya pada bagian criteria, kita masukkan criteria
yang kita maksudkan, yaitu = ‘Harry Redknapp’ and ‘Arsene Wenger’. Hasil
eksekusi menunjukkan tidak ada satu recordpun yang memenuhi. Hal ini
karena memang tidak ada buku yang ditulis secara bersama oleh ‘Harry
Redknapp’ dan ‘Arsene Wenger’. Bagaimana kalau kita ganti and dengan or?
Perhatikan pada Gambar 11.31. Ada 3 record yang sesuai.

Gambar 11.30. Query dengan menggunakan operator and.

Rekayasa Perangkat Lunak 303


Gambar 11.31. Query dengan menggunakan operator or.

o Query pada lebih dari satu tabel


Query pada lebih dari satu tabel, relasi antar tabel yang telah kita buat
sebelumnya akan menjadi sangat penting. Karena relasi ini akan menentukan
bagaimana hasil dari query. Prosedur untuk membuat query sama seperti
membuat query satu tabel, namun tabel yang dipilih pada jendela Show Tabel
tidak lagi satu, tetapi mungkin dua, tiga atau lebih, sesuai dengan kebutuhan.
Berikut ini beberapa contoh query dengan lebih dari satu tabel.
1. Contoh query yang pertama adalah query yang melibatkan dua tabel,
misalnya:
Tampilkan nama dan alamat pembeli yang jumlah pembeliannya lebih
dari 100000.
Pada query ini kita membutuhkan tabel pembeli karena kolom nama dan
alamat pembeli ada pada tabel pembeli. Kita juga membutuhkan tabel
pesanan karena kolom jumlah pembelian ada pada tabel ini. Dari relasi antar
tabel pada Gambar 11.24, kita tahu bahwa ada relasi antara tabel pembeli
dan tabel pesanan dengan kardinalitas one-to-many. Prosedur membuat
query akan seperti berikut:
Pada jendela Database pilih Query lalu klik dua kali Create Query In Design
View. Sehingga akan muncul jendela Show Tabel. Pilih tabel pembeli dan
pesanan pada jendela Show Table (Gambar 11.32), kemudian click Add dan
kemudian Close. Jendela Show Table akan tertutup dan kita dapat mulai
melakukan query.

304 Aplikasi Basis Data berbasis Microsoft Access.


Gambar 11.32. Pemilihan tabel untuk query dua tabel.

Ketika kita memilih tabel pembeli dan pesanan seperti tampak pada Gambar
11.33, secara otomatis Microsoft Access akan menampilkan garis relasi antara
kedua tabel tersebut. Apabila kita belum membuat relasi, maka garis relasi
tidak akan muncul. Pada Gambar 11.33 terlihat pada bagian Field untuk
kolom nama dan alamat, Tabel nya adalah pembeli. Sedangkan pada
jumlah_pembelian, tabelnya adalah pesanan. Selain itu pada kolom
jumlah_pembelian, kita juga membuat criteria, yaitu yang lebih besar dari
100000. Hasil eksekusi query menunjukkan ada dua orang pembeli yang
jumlah_pembeliannya lebih dari 100000.

Rekayasa Perangkat Lunak 305


Gambar 11.33. Query dua tabel

2. Contoh query yang kedua adalah query yang melibatkan tiga tabel, misalnya:
Tampilkan judul buku dan pengarangnya yang dibeli pada tanggal 22 Juli 2007
atau 25 Juli 2007.
Pada query ini kita membutuhkan tabel buku karena kolom judul dan
pengarang ada pada tabel buku. Kita juga membutuhkan tabel pesanan
karena kolom tanggal pembelian ada pada tabel ini. Namun dari relasi antar
tabel pada Gambar 11.24, kita tahu bahwa tabel pesanan dan tabel buku
tidak ada relasi langsung. Tabel pesanan berhubungan langsung dengan
tabel item_pesanan dan tabel item_pesanan berhubungan langsung dengan
tabel buku. Semua relasinya berkardinalitas one-to-many. Sehingga
pembuatan query akan seperti berikut:
Pilih tabel buku, item_pesanan dan pesanan pada jendela Show Tabel.
Kemudian click Add dan kemudian Close. Seperti tampak pada Gambar
11.34 terlihat relasi antara ketiga tabel tersebut. Hasil eksekusi query ini
menghasilkan tiga record seperti terlihat pada gambar.

306 Aplikasi Basis Data berbasis Microsoft Access.


Gambar 11.34. Query tiga tabel.

3. Contoh query yang ketiga adalah query yang melibatkan semua tabel pada
basis data penjualan buku, misalnya:
Tampilkan nama dan alamat pembeli yang membeli buku dengan judul Teori
Sepakbola Modern.
Pada query ini kita membutuhkan tabel pembeli karena kolom nama dan
alamat ada pada tabel pembeli. Kita juga membutuhkan tabel buku karena
kolom judul hanya ada pada tabel ini. Dari relasi antar tabel pada Gambar
11.24, kita tahu bahwa tabel pembeli dan tabel buku tidak ada relasi
langsung, namun harus melalui tabel pesanan dan tabel item_pesanan. Oleh
karena itu kita membutuhkan keempat tabel tersebut dalam query ini. Pada
Gambar 11.35 terlihat bagaimana query ini harus dibuat. Hasil eksekusi query
ini menghasilkan tiga record seperti terlihat

Rekayasa Perangkat Lunak 307


Gambar 11.35. Query empat tabel.

11.4. FORM
Form adalah salah satu obyek basis data dalam Microsoft Access yang
digunakan sebagai antar muka bagi pengguna untuk memasukkan data atau
menampilkan data. Bagi pengguna awam, memasukkan data seperti pada Gambar
11.16 sampai dengan 11.19 agak menyulitkan. Jauh lebih mudah menggunakan
form. Pada Microsoft Access, dikenal ada tiga model form, yaitu: form data entry
(Gambar 11.36 no 1), form switchboard (no 2) dan form custom dialog (no. 3).
Ada dua cara pembuatan form pada Micosoft Access, yaitu dengan
menggunakan Wizard dan dengan menggunakan Design View. Wizard merupakan
cara yang paling mudah, karena kita Microsoft Access akan melakukan pembuatan
form secara otomatis. Sedangkan pada Design View kita melakukan rancangan form
secara manual. Kita dapat memodifikasi hasil dari Wizard dengan Design View.

308 Aplikasi Basis Data berbasis Microsoft Access.


Gambar 11.36. Jenis-jenis form.

11.4.1. Membuat Form


Pada bagian ini kita akan membuat form dengan mode Wizard. Form
pertama yang akan kita buat adalah form untuk input data Pembeli.
1. Pada jendela Database, click pada object Form, kemudian double click pada
Create form by using Wizard. Jendela Form Wizard akan terbuka (Gambar
11.37)

Gambar 11.37. Membuka jendela Form Wizard.

Rekayasa Perangkat Lunak 309


2. Pada jendela Form Wizard, click pada combo box Tabel/Queries dan pilih tabel
pembeli (Gambar 11.38), kemudian click tombol >> sehingga semua field
yang ada pada bagian Available Fields berpindah ke Selected Fields (lihat
Gambar 11.39). Kemudian click Next untuk memunculkan jendela untuk
memilih model tampilan form (Gambar 11.40)

Gambar 11.38. Pemilihan tabel yang akan dibuat formnya.

Gambar 11.39. Pemilihan field untuk form.

310 Aplikasi Basis Data berbasis Microsoft Access.


Gambar 11.40. Jendela untuk memilih model tampilan form.

3. Pada Gambar 11.40, tersedia beberapa opsi model tampilan form. Kita akan
mencoba membuat dengan model Columnar. Namun pembaca dapat
mencoba membuat dengan model tampilan lain yang tersaji pada pilihan.
Click tombol Next maka akan muncul jendela untuk memilih style (Gambar
11.41). Pada jendela ini kita dapat memilih sesuai keinginan kita dan setelah
selesai kita click Next sehingga muncul jendela untuk member Title atau judul
form yang telah kita buat. Isikan nama form pada Textbox yang telah
disediakan (Gambar 11.42).

Gambar 11.41. Jendela untuk memilih style form.

Rekayasa Perangkat Lunak 311


Gambar 11.42. Jendela untuk memberi nama form.

4. Click tombol Finish pada Gambar 11.42. Form pembeli telah selesai kita buat
dan hasilnya tampak pada Gambar 11.43. Ada bagian yang sangat penting
pada Form telah kita buat. Yaitu tombol navigasi dan tombol menambah
record baru. Tombol navigasi berfungsi untuk melihat data yang telah kita
buat secara urut berdasarkan id_pembeli. Sedangkan apabila tombol
menambah form di-click, maka teks yang ada pada seluruh textbox akan
dikosongkan dan kita dapat mulai mengisi data baru.

Gambar 11.43. Form Pembeli.

312 Aplikasi Basis Data berbasis Microsoft Access.


Dengan cara yang sama kita dapat membuat form-form yang lain. Sebagai
contoh berikut ini tampilan akhir untuk Form Buku.

Gambar 11.44. Form Buku.

11.4.2. Memodifikasi Form


Membuat form dengan menggunakan mode wizard memiliki keuntungan
yaitu, kemudahan dan kecepatan dalam pembuatan. Namun disisi lain juga memiliki
kerugian karena semua format telah ditentukan secara otomatis. Sebagai contoh baik
pada Gambar 11.43 dan 11.44, kita melihat nama-nama fields pada form dibuat sama
persis seperti pada nama fields pada tabelnya. Untungnya pada Microsoft Access
menyediakan fasilitas untuk memodifikasi form. Berikut ini langkah-langkah untuk
memodifikasi form.
1. Pada jendela Database, pilih Form. Kemudian click kanan pada nama form
yang ingin kita modifikasi. Pilih Design View pada pop menu yang muncul,
sehingga jendela form yang akan kita modifikasi muncul seperti pada Gambar
11.45.

Gambar 11.45. Jendela Form Pembeli pada mode Design View.

Rekayasa Perangkat Lunak 313


2. Pada Gambar 11.45, yang akan kita akan modifikasi adalah Form Pembeli.
Sebelum kita modifikasi kita perlu tahu bagian-bagian dari suatu form.
Gambar 11.46. menunjukkan bagian-bagian utama dari suatu form. Secara
umum ada tiga bagian pada form, yaitu Form Header, Detail dan Form Footer.
Form Header biasanya berisi judul form dan logo tertentu. Bagian Detail
merupakan bagian utama karena disinilah tempat kita meletakkan field-field
yang akan diisi datanya. Bagian Form Footer bersifat opsional (boleh dipakai
boleh tidak). Biasanya Form Footer akan berisi keterangan-keterangan lain
misalnya nama pembuat, nama pengisi data dan lain-lain.

Gambar 11.46. Bagian-bagian suatu form.

3. Microsoft Access menggunakan control-control yang sama seperti pada


bahasa pemrograman berbasis GUI (lihat kembali Bab 13). Pada form kita
akan menjumpai control Label, Text Box, Combo Box, Command Button dan
lain-lain.
4. Modifikasi pertama yang kita lakukan adalah memperbaiki tampilan pada
nama-nama fields. Caranya dengan click pada Label yang ingin kita perbaiki.
Kemudian ganti atau ubah dengan cara mengetikkan nama yang baru.
Setelah semua selesai tampilan Form Pembeli akan tampak seperti pada
Gambar 11.47. Perhatikan perbedaan Label fields pada Gambar 11.45 dan
Gambar 11.47.

314 Aplikasi Basis Data berbasis Microsoft Access.


Gambar 11.47. Perubahan pada Label fields pada Form Pembeli.

5. Modifikasi berikutnya yang akan kita lakukan adalah menambahkan tombol-


tombol untuk memudahkan pengguna dalam mengisi data. Untuk melakukan
ini kita harus mengatur form menjadi seperti pada Gambar 11.48. Kemudian
kita tambahkan tombol dengan cara click pada icon Command Button pada
Toolbar, lalu letakan pada Form. Jendela Command Buttom Wizards akan
muncul seperti pada Gambar 11.49. Pada Categories pilih Record Operations
dan pada Actions pilih Add New Record. Click Next untuk melanjutkan. Pada
jendela berikutnya (Gambar 11.50) pilih Text dan ketikkan Tambah lalu klik
Next. Pada jendela berikutnya (Gambar 11.51) ketikkan nama untuk
command button ini, kita berikan nama misalnya cmdTambah lalu klik Finish.

Gambar 11.48. Modifikasi tampilan form.

Rekayasa Perangkat Lunak 315


Gambar 11.49. Mendefinisikan aksi untuk suatu Command Button.

Gambar 11.50. Mendefinisikan teks pada Command Button.

316 Aplikasi Basis Data berbasis Microsoft Access.


Gambar 11.51. Mendefinisikan nama Command Button.

6. Kita tambahkan tombol yang berfungsi menghapus data. Cara pembuatannya


persis seperti di atas hanya saja pada jendela Command Buttom Wizards,
Categories dipilih Record Operations dan Actions yang dipilih adalah Delete
Record (Gambar 11.52). Tentukan teks dan nama command button yang
sesuai.

Rekayasa Perangkat Lunak 317


Gambar 11.52. Mendefinisikan nama Command Button.

7. Tampilan akhir dari form setelah dimodifikasi akan tampak seperti pada
Gambar 11.53.

318 Aplikasi Basis Data berbasis Microsoft Access.


Gambar 11.53. Hasil modifikasi Form Pembelian.

Kita dapat menambahkan tombol-tombol lain atau control-control lain dengan


cara yang kurang lebih sama.

11.5. REPORT
Report, seperti halnya form, digunakan untuk merepresentasikan hasil olahan
data menjadi informasi yang siap di cetak di lembaran kertas. Kita dapat saja
mencetak langsung dari tabel database namun hasil cetakannya tidak seperti laporan
yang diinginkan. Cara yang terbaik adalah dengan membuat model laporan dengan
fasilitas Report. Report dapat dibuat dengan dua cara yaitu manual dan wizards.
Seperti halnya pada form, wizard memberikan kemudahan dalam pembuatan report,
karena semuanya sudah diatur otomatis. Berikut ini kita akan membuat laporan
penjualan harian. Laporan ini berisi tanggal transaksi, ISBN dan judul buku yang
terjual, harga masing-masing buku dan total nilai penjualan per hari/tanggal.
1. Untuk membuat report ini kita tidak bias langsung dari tabel, karena report ini
berisi gabungan dari beberapa tabel yang ada. Sehingga kita harus membuat
query sebagai sumber data untuk laporan. Cara membuat query sama
dengan yang kita lakukan sebelumnya. Perhatikan Gambar 11.54 berikut ini.
Pada Gambar tersebut kita memilih tabel pesanan, item_pesanan dan buku.
Kemudian kita memilih tanggal_pembelian, isbn, judul, dan harga pada bagian
Field. Kemudian kita simpan dengan nama query_rpt_penjualan_harian (atau
dengan nama yang lain).

Rekayasa Perangkat Lunak 319


Gambar 11.54. Jendela query untuk sumber report.

2. Pada jendela Database pilih object Report dan double click pada Create
Report by using Wizard. Jendela Report Wizard akan terbuka dan pada
bagian Tabels/Queries pilih query yang telah kita buat pada bagian 1 (lihat
Gambar 11.55). Kemudian click tombol >> sehingga semua field yang ada
pada bagian Available Fields berpindah ke Selected Fields (lihat Gambar
11.56)

Gambar 11.55. Pemilihan query sebagai sumber data laporan.

320 Aplikasi Basis Data berbasis Microsoft Access.


Gambar 11.56. Pemilihan fields yang terlibat.

3. Click Next untuk membuka jendela berikutnya (Gambar 11.57). Pada jendela
ini kita menentukan dasar tampilan laporan, apakah berdasarkan buku atau
pesanan. Karena kita akan membuat laporan harian maka tampilan
berdasarkan pesanan yang kita pilih (ingat, field tanggal_pembelian ada pada
tabel pesanan).
4. Click Next untuk melanjutkan dengan jendela berikutnya (Gambar 11.58).
Jendela ini digunakan untuk mengelompokkan (grouping) data pada field
yang sama. Pada contoh kali ini kita tidak melakukan grouping sehingga kita
tidak perlu mengatur apa-apa pada jendela ini. Kita dapat langsung click Next
untuk melanjutkan pada jendela berikutnya.

Rekayasa Perangkat Lunak 321


Gambar 11.57. Jendela untuk menentukan dasar tampilan report.

Gambar 11.58. Jendela untuk menentukan grouping data.

5. Pada Gambar 11.59, kita dapat memilih melakukan pengurutan data atau
tidak. Pada bagian ini kita akan mengurutkan berdasarkan nomor ISBN dan
kemudian berdasarkan judul buku. Pada Combo Box no 1 kita pilih isbn dan
pada Combo Box no 2 kita pilih judul. Selain itu pada bagian ini kita juga
mengatur apakah kita membuat ringkasan laporan atau tidak. Click pada
Summary Options untuk membuka jendela pengaturan ringkasan (Gambar

322 Aplikasi Basis Data berbasis Microsoft Access.


11.60). Pada field harga kita check pada kotak di bawah Sum. Maksud dari
bagian ini adalah kita akan menampilkan jumlah pembelian atau transaksi tiap
harinya dan total transaksi. Jika sudah selesai kita dapat menutup jendela
Summary Option dengan meng-click tombol OK. Kemudian kita click Next
untuk melanjutkan dengan jendela berikutnya.

Gambar 11.59. Jendela untuk menentukan urutan data.

Gambar 11.60. Jendela untuk mengatur tampilan ringkasan.

Rekayasa Perangkat Lunak 323


6. Gambar 11.61 menunjukkan jendela untuk mengatur lay-out dari laporan.
Kita dapat mencoba-coba lay-out mana yang sesuai. Pada contoh ini kita
akan mencoba dengan lay-out Block dan Orientation Landscape. Click Next
jika sudah selesai dan jendela untuk mengatur style dari laporan (Gambar
11.62). Pada bagian ini kita dapat memilih sesuai keinginan kita. Setelah
selesai click Next untuk membuka jendela terakhir dari Report Wizard. Pada
bagian Text Box yang tersedia kita tentukan judul dari laporan yang telah kita
buat. Click tombol Finish untuk mengakhiri proses pembuatan laporan. Hasil
pembuatan laporan akan ditampilkan seperti pada Gambar 11.61.

Gambar 11.61. Jendela untuk mengatur lay-out dan orientation.

Gambar 11.62. Jendela untuk mengatur style laporan.

324 Aplikasi Basis Data berbasis Microsoft Access.


Gambar 11.63. Hasil pembuatan laporan menggunakan Wizard.

7. Pada Gambar 11.63, kita melihat laporan yang tidak terlalu bagus bila dicetak.
Judul kolom masih menggunakan nama field pada tabel. Selain itu kata-kata
Summary for tanggal pembelian dan seterusnya, agak mengganggu tampilan
laporan. Untuk memperbaiki tampilan laporan, click kanan pada nama report
di jendela object Report kemudian pilih Design View. Jendela seperti pada
Gambar 11.64 akan terbuka.

Gambar 11.64. Laporan dalam mode Design View.

Rekayasa Perangkat Lunak 325


8. Perbaikan pertama yang akan kita lakukan adalah pada judul kolom. Kita
akan ganti menjadi seperti pada Gambar 11.65. Untuk mengganti judul
kolom, double-click pada judul kolom yang ingin diganti kemudian ketikan
nama yang baru. Kita juga dapat mengatur lebar kolom dengan cara click
pada bagian paling atas kolom untuk memilih seluruh kolom kemudian
letakkan kursor pada samping kanan kolom dan geser untuk memperlebar
kolom (sama persis dengan mengatur lebar tabel pada Microsoft Word).
9. Perbaikan yang kedua adalah kita menghilangkan kata-kata Summary for
tanggal pembelian dan seterusnya yang tampak pada Gambar 11.64.
Caranya dengan click pada bagian tersebut kemudian tekan tombol Del pada
keyboard. Selain itu kita hilangkan kata Sum dan kita ganti kata Grand Total
dengan Total Penjualan. Penambahan garis juga dapat dilakukan dengan
memilih control line pada Toolbar Report, kemudian diletakkan pada posisi
yang diinginkan. Tampilan akhir pada Design View akan tampak seperti pada
Gambar 11.65. Sedangkan hasil Print Preview dari laporan akan tampak
seperti pada Gambar 11.66.

Gambar 11.65. Design laporan setelah dilakukan perbaikan.

326 Aplikasi Basis Data berbasis Microsoft Access.


Gambar 11.66. Print Preview laporan setelah perbaikan.

11.6. RINGKASAN
• Ada enam obyek penting Microsoft Access, yaitu Table, Queries, Forms,
Reports, Macros dan Modules.
• Tabel dalam Microsoft Access terdiri dari record (baris) dan field (kolom). Tabel
dapat dibuat dengan mendefinisikan field-field yang dibutuhkan dilengkapi
dengan tipe data, domain dan penentuan primary key nya.
• Query atau permintaan data dapat menampilkan data dari satu tabel atau
beberapa tabel yang saling berhubungan. Query dalam Microsoft Acces dapat
dilakukan dengan menggunakan fasilitas GUI.
• Form adalah salah satu obyek basis data dalam Microsoft Access yang
digunakan sebagai antar muka bagi pengguna untuk memasukkan data atau
menampilkan data. Form dapat dibuat melalui metode Wizard maupun manual
dengan menggunakan Design View.
• Report digunakan untuk merepresentasikan hasil olahan data menjadi
informasi yang siap di cetak di lembaran kertas. Report juga dapat dibuat
dengan cara manual maupun dengan fasilitas Wizard.

Rekayasa Perangkat Lunak 327


11.7. SOAL-SOAL LATIHAN
1. Perhatikan tabel-tabel yang ada pada contoh di atas. Tambahkan satu buah
tabel dengan nama penerbit. Atribut-atributnya adalah ID Penerbit, nama
penerbit, alamat, kota dan contact person. Tentukan sendiri tipe data dan
lebar data untuk tabel tersebut. Isilah tabel buku tersebut dengan penerbit-
penerbit yang anda ketahui (coba lihat buku-buku diperpustakaan kalian dan
cermati informasi tentang penerbit).
2. Pada kondisi nyata, penerbit akan berhubungan dengan buku. Sebuah
penerbit dapat menerbitkan lebih dari satu buku. Tetapi satu buku hanya
bisa diterbitkan oleh satu penerbit. Buatlah hubungan antar tabel baru antara
tabel buku dengan penerbit. Jika perlu lakukan perubahan pada tabel buku.
3. Buatlah query-query berikut ini dan cermati hasil yang dperoleh.
a. Tampilkan semua data penerbit.
b. Tampilkan data penerbit yang berasal dari kota Bandung.
c. Tampilkan data penerbit yang mempunyai buku berharga di atas Rp.
150.000,-.
d. Tampilkan nama penerbit yang bukunya dibeli oleh Cristiano Ronaldo.
e. Tampilkan buku yang dibeli oleh Cristiano Ronaldo dan Wayne
Rooney.
4. Buatlah form untuk memasukkan data-data penerbit.
5. Buatlah report untuk menampilkan daftar penerbit dan buku yang
diterbitkannya.

328 Aplikasi Basis Data berbasis Microsoft Access.


Gambar 12.1 di samping ini adalah gambar
sekumpulan komputer server yang biasanya ada
pada perusahaan penyedia jasa internet atau
pada bagian teknologi informasi perusahaan-
perusahaan besar. Salah satu fungsi peralatan
ini adalah sebagai pusat data yang dibutuhkan
penggunanya. Peran sebagai pusat data ini
membutuhkan DBMS dan aplikasi basis data yang
kuat. Perangkat DBMS seperti Microsoft SQL
Server, Oracle, MySQL, PostgreSQL biasanya
menjadi pilihan. Fungsi-fungsi lanjut yang
disediakan oleh DBMS tersebut sangat membantu
kecepatan kerja, keamanan, dan keakuratan data
yang disampaikan.
Bab ini membahas tiga standar kompetensi
yaitu melakukan pemrograman data deskripsi
Gambar 12.1. Perangkat
(SQL) tingkat dasar, mengoperasikan bahasa
komputer server.
pemrograman data deskripsi (SQL) tingkat lanjut
dan membuat program basis data dengan
Microsoft SQL Server. Kedua standar kompetensi ini disatukan karena kedekatan
materi bahasan. Susunan sub bab tidak langsung mengacu pada kompetensi dasar,
tapi lebih pada kecocokan materi. Ringkasan akan disampaikan di akhir bab
kemudian dilanjutkan dengan soal-soal latihan. Sebelum kalian mempelajari bab ini
buka kembali bab-bab tentang pemecahan masalah, sistem operasi, algoritma
lanjutan, dasar-dasar basis data, dan aplikasi basis data berbasis Microsoft Access
pada bab-bab sebelumnya.

Rekayasa Perangkat Lunak 329


TUJUAN
Setelah mempelajari bab ini diharapkan pembaca akan mampu :
o Mempersiapkan dan mengoperasikan perangkat lunak SQL
o Mengenali menu aplikasi SQL
o Membuat dan mengisi tabel
o Mengoperasikan tabel dan view
o Menggunakan T-SQL
o Menggunakan fitur-fitur lanjutan Microsoft SQL Server seperti
procedures, fungsi, trigger dan XML support
o Menerapkan administrasi Microsoft SQL Server

12.1. SEKILAS TENTANG SQL


Dalam DBMS biasanya tersedia paket bahasa yang digunakan untuk
mengorganisasi basis data yang ada, yaitu Data Definition Language (DDL) dan Data
Manipulation Language (DML).

12.1.1. Data Definition Language (DDL)


Data Definition Language (DDL) adalah satu paket bahasa DBMS yang berguna
untuk melakukan spesifikasi terhadap skema basis data. Hasil kompilasi dari DDL
adalah satu set tabel yang disimpan dalam file khusus yang disebut Data
Directory/Dictionary. Secara umum perintah perintah dalam DDL berhubungan
dengan operasi-operasi dasar seperti membuat basis data baru, menghapus basis
data, membuat tabel baru, menghapus tabel, membuat indeks, mengubah struktur
tabel. Contoh perintah DDL misalnya, Create Table, Create Index, Alter, dan Drop
Database.

12.1.2. Data Manipulation Language


Data Manipulation Language (DML) adalah satu paket DBMS yang
memperbolehkan pemakai untuk mengakses atau memanipulasi data sebagaimana
yang telah diorganisasikan sebelumnya dalam model data yang tepat. Dengan DML
dapat dilakukan kegiatan :
ƒ Mengambil informasi yang tersimpan dalam basis data.
ƒ Menyisipkan informasi baru dalam basis data.
ƒ Menghapus informasi dari tabel.
Terdapat dua tipe DML yaitu prosedural dan non prosedural. Prosedural DML
membutuhkan pemakai untuk menspesifikasikan data apa yang dibutuhkan dan
bagaimana cara mendapatkannya, sedang non prosedural DML membutuhkan
pemakai untuk menspesifikasikan data apa yang dibutuhkan tanpa tahu bagaimana
cara mendapatkannya.

330 Basis Data Berbasis SQL


SQL merupakan kependekan dari Structured Query Language (Bahasa Query
Terstruktur). SQL lebih dekat dengan DML dari pada DDL. Namun tidak berarti SQL
tidak menyediakan perintah DDL. SQL lebih menekankan pada aspek pencarian dari
dalam tabel. Aspek pencarian ini sedemikian penting karena di sinilah sebenarnya inti
dari segala upaya kita melakukan pengelolaan data. Data dalam basis data
diorganisasi sedemikian rupa dengan tujuan untuk memudahkan pencarian di
kemudian hari.
Sebagai sebuah bahasa, SQL telah distandarisasi dan mengalami beberapa
perubahan atau penyempurnaan. SQL muncul pertama kali pada tahun 1970 dengan
nama Sequel (nama yang masih sering digunakan hingga saat ini). Standarisasi yang
pertama dibuat pada tahun 1986 oleh ANSI (American National Standards Institute)
dan ISO (International Standard Organization), yang disebut SQL-86. Pada tahun
1989 SQL-86 diperbaharui menjadi SQL-89. Standar terakhir yang dibuat adalah SQL-
92.
Pernyataan-pernyataan SQL digunakan untuk melakukan beberapa tugas
seperti : update data pada basis data, atau menampilkan data dari basis data.
Beberapa software RDBMS yang dapat menggunakan SQL, seperti : Oracle, Sybase,
Microsoft SQL Server, MySQL, Microsoft Access, Ingres, dsb. Setiap software basis
data mempunyai mungkin bahasa perintah / sintaks yang berbeda, namun pada
prinsipnya mempunyai arti dan fungsi yang sama.
Perintah utama dalam SQL adalah select. Struktur utama perintah adalah
sebagai berikut:
Select <kolom>
From <table>
Where <kondisi>
Kita akan menggunakan perintah-perintah ini pada bagian-bagian berikut.

12.2. MEMPERSIAPKAN PERANGKAT LUNAK BERBASIS SQL


Seperti disebutkan di bagian awal bab, perangkat lunak yang akan kita gunakan
adalan Microsoft SQL Server. Pada kesempatan ini versi yang dipakai adalah versi
2005 Developer Edition. Penjelasan sekilas tentang Microsoft SQL Server dapat dilihat
pada bab 10.

12.2.1. Kebutuhan Operasi


Microsoft SQL Server adalah perangkat lunak yang berjalan pada platform
Microsoft Windows, sehingga kebutuhan utama dari perangkat lunak ini adalah
tersedianya komputer yang telah terinstal sistem operasi Windows, terutama versi
Server. Hal ini karena Windows versi Server memberikan integrasi yang lebih baik.
Selain itu dari sisi keamanan dan alokasi kerja model client-server, versi server
memberikan unjuk kerja yang lebih baik.

Rekayasa Perangkat Lunak 331


Microsoft SQL Server adalah perangkat lunak yang harus diaktifkan sebagai
service pada Windows. Jika belum dijalankan maka kita tidak akan dapat
menggunakannya. Default-nya, ketika Microsoft SQL Server diinstal maka secara
otomatis, service ini akan dibuat dan dijalankan setiap kali Windows dihidupkan.
Namun untuk memastikan kalian dapat memeriksanya dengan membuka Control
Panel, kemudian pilih Administrative Tool. Pada jendela Administrative Tool (Gambar
12.2) klik ganda pada ikon Service sehingga terbuka jendela seperti pada Gambar
12.3.

Gambar 12.2. Jendela Administrative Tool.

Gambar 12.3. Jendela Services.

332 Basis Data Berbasis SQL


Pada jendela Service carilah nama service SQL Server kemudian periksalah di
kolom status, apakah sudah started atau belum. Jika belum jalankan (start) service
ini.

12.2.2. Menjalankan Perangkat Lunak Basis Data Berbasis SQL


Setelah terinstal maka kita dapat menggunakan Microsoft SQL Server dengan
memanggil GUI client dari Microsoft SQL Server yang disebut sebagai SQL Server
Management Studio. Ketika pertama kali dipanggil maka tampilan akan tampak
seperti pada Gambar 12.4.

Gambar 12.4. Tampilan autentikasi SQL Server Management Studio

Setiap kali kita membuka SQL Server Management Studio, kita akan diperiksa
apakah kita berhak menggunakan SQL Server atau tidak. Jika SQL Server dijalankan
pada mesin lokal dan menggunakan Windows Authentication maka kita dapat
langsung menekan tombol Connect untuk masuk ke lingkungan SQL Server. Tetapi

Rekayasa Perangkat Lunak 333


bila SQL Server dijalankan dari komputer lain (server) kita akan diminta memasukkan
user name dan password yang telah didaftarkan.
Ada informasi penting dari Gambar 12.4 di atas yang kalian perlu ketahui. Pada
gambar tersebut terlihat bahwa kita akan mengakses tipe server Database Engine,
yaitu server yang berhubungan dengan masalah aplikasi basis data. SQL Server
menyediakan beberapa tipe server yang dapat diakses. Namun tidak dijelaskan pada
buku ini. Selain itu nama server yang akan diakses adalah ARM-BLACKMATE. Hal ini
karena SQL Server diinstal pada komputer dengan nama ARM-BLACKMATE sehingga
kita perlu nama server sama dengan nama dimana SQL Server berjalan.

12.3. MENU / FITUR UTAMA


Setelah kita berhasil masuk ke dalam lingkungan SQL Server maka kita akan
disuguhi tampilan awal dari SQL Server Management Studio seperti pada Gambar
12.5.

Gambar 12.5. Tampilan awal SQL Server Management Studio.

Ada dua bagian penting yang ada pada bagian awal ini yaitu Object Explorer
dan Summary Panel. Object Explorer adalah tempat kita melihat obyek-obyek apa
saja yang ada di dalam SQL Server. Pada gambar di atas kalian bisa melihat obyek-
obyek yang tersedia. Untuk sementara yang paling penting adalah Databases.
Sedangkan Summary panel merupakan tempat keterangan atau ringkasan yang ada
pada Object Explorer. Coba klik pada salah satu obyek di Object Explorer, maka isi
Summary panel juga akan berubah sesuai dengan obyek yang kita pilih.

334 Basis Data Berbasis SQL


Kita akan fokus pada obyek Databases.
Coba klik tanda + (atau tanda node) di depan
obyek Databases, sehingga akan tampak
tampilan seperti pada Gambar 12.6 di
samping ini. Pada Gambar tersebut tampak
ada empat basis data yang sudah ada pada
SQL Server, yaitu AdventureWorks,
AdventureWorksDW, latihan01SQL dan
Northwind2007SQL. Keempat basis data ini
termasuk user object karena merupakan
buatan pengguna. SQL Server juga membuat
sendiri basis data ketika proses instalasi
berlangsung. Basis data ini biasa disebut
sebagai system object. Biasanya ada
beberapa system object yang tersedia yaitu
Gambar 12.6. Obyek Databases. Master, Model, MSDB, Resource, TempDB,
dan Distribution. Basis data ini tidak boleh
dihapus karena akan membuat sistem
menjadi tidak bekerja normal. Untuk memeriksanya, coba klik node di depan System
Databases.
Sementara ini kita tidak akan berhubungan dengan System Databases. Kita
akan melihat pada user object. Klik pada salah satu basis data maka tampilan pada
Summary Panel akan berubah. Perhatikan Gambar 12.7. Pada gambar tersebut
tampak bahwa basis data AdventureWorks berisi berbagai komponen antara lain
Database Diagrams, Tables, Views dan yang lainnya. Setiap basis data yang kita buat
di SQL server akan punya komponen-komponen ini secara default. Meskipun kita
tidak membuat Database Diagrams misalnya, komponen Database Diagrams tetap
disediakan.

Gambar 12.7. Isi dari basis data pada SQL Server.

Rekayasa Perangkat Lunak 335


12.4. PEMBUATAN DAN PENGISIAN TABEL

12.4.1. Pembuatan Basis Data


Sebelum kita membuat tabel, kita harus membuat lebih dahulu basis datanya.
Untuk membuat basis data baru, klik kanan pada Databases dan pilih New Database.
Jendela untuk membuat basis data baru akan terbuka (Gambar 12.8). Pada textbox
di depan Database name, ketikkan nama basis data yang akan dibuat. Pada contoh
ini namanya adalah Lat-01. Kemudian klik OK. Perhatikan pada Object Explorer,
basis data baru sudah terbentuk dan memiliki komponen-komponen yang sama
dengan basis data lainnya.

Gambar 12.8. Mendefinisikan basis data baru.

12.4.2. Pembuatan Tabel


Setelah basis data terbentuk kita baru bisa membuat tabel. Klik kanan pada
komponen Tables di basis data Lat-01 dan pilih New Table… Bagian Summary panel
336 Basis Data Berbasis SQL
akan berubah menjadi seperti pada Gambar 12.9. Kalian bisa mulai memasukkan
atribut atau kolom dari tabel yang akan dibuat. Pembuatan tabel ini sama persis
dengan apa yang telah kalian lakukan dengan Microsoft Access. Penentuan tipe data,
lebar data dan primary key juga tidak jauh berbeda. Yang agak berbeda adalah SQL
Server menyediakan tipe data yang lebih banyak daripada Microsoft Access. Untuk
menentukan primary key, pilih atribut kemudian tekan tanda kunci pada toolbar.

Gambar 12.9. Pembuatan tabel.

Pada gambar di atas, kita membuat tabel dengan 5 kolom yaitu NoInduk,
Nama, Alamat, Kota, NoTelepon. Masing-masing bertipe nchar dengan lebar data
yang bervariasi. Untuk menentukan lebar data, lihatlah pada bagian property dari
kolom. Setelah selesai simpan tabel dengan nama tertentu. Pada contoh di atas
tabel disimpan dengan nama siswa. SQL server akan memberikan awalan nama
(prefix) dbo secara default. Tetapi ini bisa kita rubah. Jadi nama tabel yang kita buat
di atas akan menjadi dbo.siswa.
Hapuslah tabel dbo.siswa dengan cara klik kanan lalu pilih Delete. Sekarang
buatlah tabel-tabel berikut ini dengan cara seperti di atas.

Rekayasa Perangkat Lunak 337


Tabel 12.1. Tabel, kolom, tipe data yang akan dibuat.
Nama Tabel Kolom Tipe dan lebar Data Keterangan
Siswa - NoInduk Nchar (10)
- NamaSiswa Nchar (20)
- Alamat Nchar (30)
- Kota Nchar (20)
- Telepon Nchar (15)
- IdProgram Smallint
Guru - NIP Nchar (15) NIP sebagai
- NamaGuru Nchar (20) primary key
- Alamat Nchar (30)
- Kota Nchar (20)
- Telepon Nchar (15)
Program - IdProgram Smallint IdProgam sebagai
- NamaProgram Nchar (20) primary key
- Deskripsi Nchar (100)
Bidang - IdBidang Smallint IdBidang sebagai
- NamaBidang Nchar (20) primary key
- Deskrips
Guru_Program - NIP Nchar (15) Kedua atribut ini
- IdProgram Smallint bersama-sama
sebagai primary
key
Guru_Bidang - NIP Nchar (15) Kedua atribut ini
- IdBidang Smallint bersama-sama
sebagai primary
key

12.4.3. Pengisian Data pada Tabel


Setelah semua tabel terbentuk, kita dapat mengisi tabel dengan data-data yang
kita inginkan. Dengan menggunakan GUI SQL Server Management Studio kita dapat
mengisi data seperti halnya pada Access. Klik kanan pada nama tabel kemudian pilih
Open Table. Jendela baru pada Summary panel akan terbuka dan siap untuk diisi
datanya. Gambar 12.10 menunjukkan bagaimana kita mengisi data pada sebuah
tabel. Setiap kali kalian mengisi untuk satu baris harus diikuti dengan menekan Enter.
Jika tidak maka data tidak tersimpan. Cobalah isi tabel-tabel yang lain.

338 Basis Data Berbasis SQL


Gambar 12.10. Pengisian tabel.

12.5. OPERASI PADA TABEL DAN VIEW

12.5.1. Relasi Antar Tabel


Tabel-tabel yang telah kalian buat dan isi di atas masih merupakan tabel yang
berdiri sendiri tidak ada hubungan antar tabel. Padahal kalau dilihat dari tabel-tabel
yang ada kita bisa membuat model hubungannya (lihat bab 10 dan 11 tentang relasi
antar tabel). Tabel siswa berhubungan dengan tabel program, tabel guru
berhubungan dengan tabel bidang dan tabel program. Untuk membuat hubungan
antar tabel ini kita bisa menggunakan komponen Database Diagrams. Klik kanan
pada Database Diagrams kemudian pilih New Database Diagram. Jendela baru akan
terbuka seperti tampak pada Gambar 12.11.

Gambar 12.11. Jendela untuk menambah tabel yang berhubungan.


Rekayasa Perangkat Lunak 339
Pada jendela Add Table klik Add untuk memilih tabel yang akan kita relasikan.
Pada contoh ini kita akan pilih semua tabel karena semua saling terkait. Klik Add
beberapa kali sampai tidak ada nama tabel di jendela Add Table. Setelah semua tabel
terpilih buat relasi seperti tampak pada Gambar 12.12. Cara menghubungkan tabel
satu dengan tabel yang lain sama persis dengan yang kita lakukan di Microsoft
Access. Simpan diagram ini.

Gambar 12.12. Relasi antar tabel.

12.5.2. Membuat View


View sama dengan Query pada Microsoft Access. SQL Server juga
menyediakan fitur GUI untuk membuat View seperti halnya GUI Query pada Microsoft
Access. Untuk membuat View, klik kanan pada View kemudian pilih New View
sehingga jendela seperti Gambar 12.13 terbuka. Pilih Add Table untuk menambahkan
satu atau lebih tabel yang akan kita buat View-nya. Misalnya kita pilih tabel siswa.
Klik Close untuk menutup jendela tersebut. Sehingga akan muncul tampilan seperti
tampak pada Gambar 12.14.
Ada empat bagian penting pada Gambar 12.14 yaitu jendela Diagram, jendela
Criteria, jendela SQL dan jendela Result. Jendela Diagram digunakan sebagai tempat
tabel-tabel sumber yang akan kita buat View-nya. Jendela Criteria adalah tempat kita
menentukan kriteria-kriteria pada View. Jendela SQL adalah tempat menuliskan
perintah SQL dari View yang kita buat. Jendela Result adalah tempat untuk
menampilkan hasil dari View.

340 Basis Data Berbasis SQL


Gambar 12.13. Jendela untuk menentukan tabel yang akan dibuat View.

Gambar 12.14. Jendela untuk membuat View.

Rekayasa Perangkat Lunak 341


Pada Gambar 12.14, kita telah memilih tabel Siswa sebagai sumber View dan
muncul pada jendela Diagrams. Kita akan membuat View sederhana berdasarkan
tabel ini. Klik *(All Columns) di bawah nama tabel Siswa. Isi jendela SQL otomatis
akan berubah. Isi jendela SQL akan berubah sesuai dengan apa yang kalian lakukan
pada jendela Diagram dan jendela Criteria. Kemudian klik tanda seru (!) pada toolbar
untuk mengeksekusi View tersebut atau klik kanan di salah satu bagian pada Gambar
12.14 (boleh di jendela Diagram/Criteria/SQL/Result) kemudian pilih Execute SQL.
Kalian akan memperoleh tampilan seperti pada Gambar 12.15. Simpan View ini
dengan cara klik pada ikon Disket pada Toolbar kemudian masukkan nama View.

Gambar 12.15. Hasil eksekusi View.

Kalau kalian perhatikan, langkah-langkah membuat View di atas sama persis


dengan apa yang kalian lakukan ketika membuat Query pada Microsoft Access. Kita
akan buat beberapa contoh yang lebih kompleks. Perhatikan contoh-contoh berikut.

342 Basis Data Berbasis SQL


Contoh 12.1. View untuk menampilkan nama Guru yang alamat rumahnya di luar
kota Malang.
Pada contoh ini kita menggunakan tabel Guru sebagai sumber View. Buat View baru
kemudian tampilkan jendela seperti pada Gambar 12.13. Pilih tabel Guru kemudian
Close. Klik Nama, Alamat dan Kota pada kotak tabel Guru. Kemudian pada jendela
Criteria, pilih baris Kota dan pada kolom Filter ketikkan pernyataan <> ‘Malang’.
Jalankan View ini, kalian akan mendapatkan hasil seperti pada Gambar 12.16.

Gambar 12.16. Hasil eksekusi View contoh 12.1.

Kolom Filter pada jendela Criteria digunakan untuk memilih baris yang sesuai
dengan keinginan kita. Pada contoh di atas, digunakan untuk memilih baris yang isi
kolom Kotanya bukan ‘Malang’. Kita menggunakan tanda <> untuk menyatakan
ketidaksamaan.
Contoh 12.2. View untuk menampilkan nama, nomor induk, dan program keahlian
Siswa secara urut abjad nama.
Contoh ini membutuhkan minimal 2 tabel, yaitu tabel Siswa dan tabel Program.
Perhatikan relasi antar tabel pada Gambar 12.12. Tabel Siswa berhubungan langsung
dengan tabel Program. Dengan cara yang sama seperti Contoh 12.13, pilih tabel
Siswa dan tabel Program. Pada kotak Siswa di jendela Diagram pilih Nama dan
NoInduk sedangkan pada kotak Program pilih NamaProgram. Pada jendela Criteria,
pilih baris Nama dan klik pada kolom Sort Type kemudian pilih Ascending. Kemudian
jalankan View tersebut. Kalian akan mendapat hasil seperti pada Gambar 12.17.

Rekayasa Perangkat Lunak 343


Perhatikan pada jendela Result, kolom Nama ditampilkan berurutan sesuai dengan
abjad.

Gambar 12.17. Hasil eksekusi View contoh 12.2.

Contoh 12.3. View untuk menampilkan nama Guru dan bidang keahliannya secara
urut abjad nama.
Berdasarkan relasi tabel pada Gambar 12.12, maka View pada contoh ini
membutuhkan tiga buah tabel yaitu tabel Guru, Guru_Bidang dan Bidang. Kolom
Nama ada di tabel Guru sedangkan kolom NamaBidang ada pada tabel Bidang. Pilih
tiga tabel tersebut. Pada kotak Guru di jendela Diagram pilih Nama kemudian pada
kotak Bidang pilih NamaBidang. Pada jendela Criteria, pilih baris Nama dan klik pada
kolom Sort Type kemudian pilih Ascending. Jalankan View ini. Perhatikan hasil yang
diperoleh.

344 Basis Data Berbasis SQL


Gambar 12.18. Hasil eksekusi View contoh 12.3.

12.6. MENGGUNAKAN T-SQL


Transact-SQL (disingkat T-SQL) adalah varian dari bahasa basis data SQL
yang dikeluarkan oleh perusahaan Microsoft dan Sybase. Microsoft SQL Server hanya
mengenali bahasa SQL tipe T-SQL ini. Oleh karena itu jika kalian ingin menggunakan
Microsoft SQL Server, maka kalian harus memahami bahasa ini.
Secara umum T-SQL tidak berbeda jauh dengan SQL standard. Hal ini karena
T-SQL sebenarnya adalah bahasa SQL standar yang diberi tambahan perintah-
perintah khusus untuk membantu kerja dalam SQL Server. Perintah SELECT, FROM
dan WHERE yang telah kita singgung di awal bab, tetap menjadi perintah utama di T-
SQL.
Untuk membuat perintah-perintah T-SQL ini SQL Server mempunyai jendela
Query yang dapat kita buka dengan cara klik pada tombol New Query di bawah Menu
Bar (lihat Gambar 12.19). Sebelumnya pilih terlebih dahulu basis data yang ingin kita
gunakan dengan cara klik pada nama basis data di Object Explorer. Setelah jendela
Query terbuka kalian dapat mulai mengetikkan perintah-perintah SQL.

Rekayasa Perangkat Lunak 345


Gambar 12.19. Membuka jendela query.

12.6.1. Definisi Tabel dengan T-SQL


Hampir semua aktivitas di dalam SQL Server dapat dilakukan dengan
menggunakan perintah-perintah T-SQL. Termasuk membuat tabel. Pada sub bab
sebelumya kalian telah membuat tabel-tabel dengan menggunakan fasilitas GUI.
Kalian juga bisa membuat tabel-tabel tersebut dengan perintah-perintah SQL.
Perintah-perintah yang berhubungan dengan definisi tabel termasuk dalam kategori
DDL. Perintah untuk pendefinisian atau pembuatan tabel baru adalah CREATE
TABLE. Sedangkan untuk menghapus kita menggunakan perintah DROP TABLE
Buat basis data baru dengan nama Lat-01_SQL. Kemudian pilih basis data
tersebut. Buka jendela Query seperti pada Gambar 12.18. Kiata akan membuat
tabel-tabel yang sama seperti pada Lat-01 tetapi dengan perintah SQL. Tabel
pertama yang kita buat adalah tabel Siswa (lihat kembali struktur tabel ini pada Tabel
12.1 di atas). Ketikkan perintah berikut ini, kemudian jalankan dengan klik tanda seru
(!).
CREATE TABLE [dbo].[Bidang](
[IdBidang] [smallint] NOT NULL,
[NamaBidang] [nchar](20)NULL,
[Deskripsi] [nchar](100)NULL,
CONSTRAINT [PK_Bidang] PRIMARY KEY CLUSTERED
(
[IdBidang] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

346 Basis Data Berbasis SQL


Perintah CREATE TABLE diikuti dengan nama tabel yang akan kita buat
([dbo].[Bidang]) kemudian diikuti dengan daftar kolom yang ada pada tabel tersebut.
Pada daftar kolom ini, tipe data, lebar data dan kondisi lainnya (misalnya NOT NULL
atau NULL) harus dicantumkan. Setelah itu baru bagian CONSTRAINT dari tabel
tersebut dituliskan. Bagian CONSTRAINT ini biasanya berisi pendefinisian Primary Key
dari tabel tersebut. Perhatikan cara penulisan perintah-perintah di atas.
Setelah kalian jalankan, periksalah pada bagian node Tables apakah tabel
kalian sudah terbentuk atau belum. Klik kanan pada Tables basis data kalian di
Object Explorer kemudian pilih Refresh. Tabel baru yang kalian buat akan muncul di
bawah Object Tables. Buatlah tabel-tabel lainnya dengan cara yang sama. Berikut ini
perintah-perintah pembuatan masing-masing tabel.
Tabel Program
CREATE TABLE [dbo].[Program](
[IdProgram] [smallint] NOT NULL,
[NamaProgram] [nchar](20) NULL,
[Deskripsi] [nchar](100) NULL,
CONSTRAINT [PK_Program] PRIMARY KEY CLUSTERED
(
[IdProgram] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Tabel Guru
CREATE TABLE [dbo].[Guru](
[NIP] [nchar](15) NOT NULL,
[Nama] [nchar](20) NULL,
[Alamat] [nchar](30) NULL,
[Kota] [nchar](20) NULL,
[Telepon] [nchar](15) NULL,
CONSTRAINT [PK_Guru] PRIMARY KEY CLUSTERED
(
[NIP] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Tabel Siswa
CREATE TABLE [dbo].[Siswa](
[NoInduk] [nchar](10) NOT NULL,
[Nama] [nchar](20) NULL,
[Alamat] [nchar](30) NULL,
[Kota] [nchar](20) NULL,
[Telepon] [nchar](15) NULL,
[IdProgram] [smallint] NULL,
CONSTRAINT [PK_Siswa] PRIMARY KEY CLUSTERED
(
[NoInduk] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

Rekayasa Perangkat Lunak 347


) ON [PRIMARY]
Tabel Guru_Program
CREATE TABLE [dbo].[Guru_Program](
[NIP] [nchar](15) NOT NULL,
[IdProgram] [smallint] NOT NULL,
CONSTRAINT [PK_Guru_Program] PRIMARY KEY CLUSTERED
(
[NIP] ASC,
[IdProgram] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Tabel Guru_Bidang
CREATE TABLE [dbo].[Guru_Bidang](
[IdBidang] [smallint] NOT NULL,
[NIP] [nchar](15) NOT NULL,
CONSTRAINT [PK_Guru_Bidang] PRIMARY KEY CLUSTERED
(
[IdBidang] ASC,
[NIP] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Pada perintah-perintah pembuatan tabel di atas, kita belum membuat relasi
antar tabel. Relasi antar tabel pada SQL biasanya dinyatakan dalam hubungan
FOREIGN KEY (lihat kembali pengertian FOREIGN KEY pada bab 10 dan 11). Kita
perlu memodifikasi tabel dengan menambahkan CONSTRAINT agar tabel dapat
mengerti relasi antar tabel. Buka kembali jendela Query kemudian ketikkan perintah-
perintah berikut ini.
ALTER TABLE [dbo].[Siswa] WITH CHECK ADD CONSTRAINT
[FK_Siswa_Program] FOREIGN KEY([IdProgram])
REFERENCES [dbo].[Program] ([IdProgram])

ALTER TABLE [dbo].[Guru_Program] WITH CHECK ADD CONSTRAINT


[FK_Guru_Program_Guru] FOREIGN KEY([NIP])
REFERENCES [dbo].[Guru] ([NIP])

ALTER TABLE [dbo].[Guru_Bidang] WITH CHECK ADD CONSTRAINT


[FK_Guru_Bidang_Bidang] FOREIGN KEY([IdBidang])
REFERENCES [dbo].[Bidang] ([IdBidang])

ALTER TABLE [dbo].[Guru_Bidang] WITH CHECK ADD CONSTRAINT


[FK_Guru_Bidang_Guru] FOREIGN KEY([NIP])
REFERENCES [dbo].[Guru] ([NIP])
Perintah untuk memodifikasi atau merubah struktur tabel adalah ALTER TABEL
kemudia diikuti dengan nama tabel yang ingin dirubah. Perhatikan pada baris ALTER
TABLE [dbo].[Siswa] WITH CHECK ADD CONSTRAINT

348 Basis Data Berbasis SQL


[FK_Siswa_Program] FOREIGN KEY([IdProgram]). Tabel yang ingin
dimodifikasi adalah dbo.Siswa dan tabel ini berhubungan dengan tabel Program
sehingga dituliskan FK_Siswa_Program. Kolom IdProgram pada tabel Siswa
merupakan FOREIGN KEY sehingga dituliskan sebagai FOREIGN
KEY([IdProgram]). Kolom IdProgram ini berasal dari tabel program sehingga
pada bagian akhir perintah harus dituliskan referensi tabelnya (ditulis dengan
REFERENCES [dbo].[Program] ([IdProgram])). Dengan cara yang sama
relasi-relasi antar tabel di atas dibuat.
Perintah DROP TABEL sangat mudah dilakukan yaitu tinggal menambahkan
nama tabel didepan perintah tersebut. Misalnya DROP TABLE [dbo].[Bidang].

12.6.2. Pengisian, Perubahan dan Penghapusan Isi Tabel dengan SQL


Setelah semua tabel selesai dibuat, maka kita dapat mengisi data pada masing-
masing tabel dengan menggunakan perintah INSERT. Perintah ini termasuk dalam
kelompok DML. Kita akan mencoba menggunakan perintah ini pada tabel Bidang.
Kita periksa dulu isi tabel Bidang dengan cara klik kanan pada nama tabel kemudian
pilih Open Table. Isi tabel akan muncul pada jendela Summary (Gambar 12.20).
Tutup kembali jendela Open Table tersebut.

Gambar 12.20. Isi tabel Bidang.

Buka jendela Query kemudian ketikkan perintah berikut.


INSERT INTO [Lat-01].[dbo].[Bidang]
([IdBidang]
,[NamaBidang]
,[Deskripsi])
VALUES
(8, 'Jaringan Wireless', NULL)
Perintah INSERT diikuti dengan nama basis data dan nama tabel ([Lat-
01].[dbo].[Bidang])kemudian diikuti dengan nama kolom yang ada pada tabel

Rekayasa Perangkat Lunak 349


tersebut. Kata kunci VALUES digunakan untuk memberi petunjuk bahwa bagian
setelah kata kunci ini adalah data yang akan dimasukkan. Perhatikan, karena ada 3
kolom di tabel Bidang, maka kita juga memasukkan 3 buah data. Data pertama (8)
harus terisi karena pada definisi tabel Bidang, kolom IdBidang dinyatakan NOT NULL.
Data ketiga yaitu untuk kolom Deskripsi kita isi NULL karena kita ingin mengosongkan
isi kolom ini.
Jalankan perintah di atas. Kemudian klik kanan pada tabel Bidang kemudian
pilih Refresh. Kemudian klik kanan lagi pada tabel Bidang dan pilih Open Table. Data
yang kalian masukkan sudah berada pada tabel Bidang (Gambar 12.21).

Gambar 12.21. Isi tabel Bidang setelah INSERT data.

Kalau kalian perhatikan, perintah INSERT di atas terlalu panjang. Coba hapus
bagian daftar nama kolom pada perintah tersebut. Kemudian ganti data di bawah
VALUES menjadi (9, ’Digital Animation’, NULL). Kemudian jalankan dan periksalah
hasilnya. Apa yang terjadi? Setelah Refresh, kalian akan menjumpai bahwa data
kalian juga dapat dimasukkan tanpa harus menyebut daftar nama kolom pada
perintah INSERT.
Seringkali dalam pengisian data pada suatu tabel, kita melakukan kesalahan.
Kesalahan dapat berupa kesalahan ketik atau kesalahan pembacaan data. Sehingga
ketika diperiksa, kita menginginkan untuk merubah/memperbaiki data tersebut.
Proses ini biasa disebut sebagai update data. SQL menyediakan perintah UPDATE
untuk melakukan proses ini. Perintah ini masih termasuk dalam kelompok DML.
Misalnya kita ingin merubah isi kolom NamaBidang pada IdBidang yang ke-5
(lihat Gambar 12.21). Dari ‘Fotografi’ kita rubah menjadi ‘Fotografi Digital’ maka kita
ketikkan perintah seperti berikut.
UPDATE [Lat-01].[dbo].[Bidang]
SET [NamaBidang] = 'Fotografi Digital'
WHERE [IdBidang] = 5
Periksa kembali isi tabel Bidang. Jangan lupa untuk me-refresh dulu tabel
Bidang sebelum perintah Open Table dijalankan.
350 Basis Data Berbasis SQL
Penghapusan data dengan SQL dilakukan dengan perintah DELETE. Perlu
diperhatikan bahwa perintah DELETE akan menghapus isi seluru baris. Kalau kalian
hanya ingin mengosongkan isi satu bagian dari baris (atau satu sel) saja gunakan
perintah UPDATE. Misalnya kita ingin kita menghapus baris yang IdBidangnya sama
dengan 8 maka kita ketikkan dengan perintah seperti berikut.
DELETE FROM [Lat-01].[dbo].[Bidang]
WHERE [IdBidang] = 8

12.6.3. Mencari dan Menampilkan Data (View) dengan SQL


Seperti telah disinggung di awal bab, perintah utama dalam SQL adalah
SELECT, FROM dan WHERE. Sebagian besar aktivitas kita menggunakan SQL
berhubungan dengan perintah-perintah ini. Untuk menggunakan perintah-perintah
ini, buka jendela Query kemudian ketikkan perintah yang kalian inginkan. Jalankan
dengan menekan tombol tanda seru (!).
Perintah SELECT digunakan untuk memilih kolom mana saja yang akan
ditampilkan. Jika kita ingin menampilkan semua kolom, kita cukup menggunakan
tanda *. Perintah FROM digunakan untuk menentukan asal kolom yang ingin kita
tampilkan datanya. Perintah WHERE digunakan untuk membatasi baris-baris yang
akan kita tampilkan agar sesuai dengan kriteria yang kita inginkan. WHERE bisa dari
tabel atau hasil dari View yang lain. Perhatikan contoh-contoh penggunaan SQL
berikut ini.
Contoh 12.4. Menampilkan semua data pada tabel Bidang.
Contoh ini kita membutuhkan tabel Bidang. Sedangkan kolom yang kita ingin
tampilkan adalah semua kolom. Kita dapat menggunakan tanda * atau mendaftar
semua kolom yang ada pada tabel Bidang. Berikut adalah perintah SQL dan hasil
eksekusinya.

Rekayasa Perangkat Lunak 351


Jika kalian ingin menyimpan dalam bentuk View perintah di atas, tambahkan
sebelum pernyataan SELECT perintah CREATE VIEW <nama_view> AS. Ganti
<nama_view> dengan nama yang kalian inginkan.
Contoh 12.5. Menampilkan data nama dan alamat siswa.
Pada contoh ini kita membutuhkan tabel Siswa. Sedangkan kolom yang kita inginkan
adalah kolom nama, alamat, dan kota. Kita tidak bisa menggunakan tanda *, tetapi
harus mendaftarkan nama kolom nama dan alamat setelah perintah SELECT.
Perhatikan perintah SQL dan outpunya berikut ini.

Contoh 12.6. Menampilkan data nama siswa yang rumahnya di Batu.


Pada contoh ini kita membutuhkan pernyataan WHERE untuk membatasi baris yang
ingin kita tampilkan. Tabel yang dipakai adalah tabel Siswa dan kolom yang ingin
ditampilkan adalah kolom Nama. Kalau kalian perhatikan hasil eksekusi contoh 12.2
di atas, yang alamat rumahnya di Batu ada dua orang yaitu Pepe Ricard dan Bubi
Red. Pernyataan WHERE diikuti dengan kondisi yang harus dipenuhi. Pada kasus ini
adalah Kota=’Batu’. Berikut ini perintah SQL secara lengkap dan outputnya.
Perhatikan cara penulisannya.

352 Basis Data Berbasis SQL


Contoh 12.7. Menampilkan data nama, alamat dan kota dari guru yang rumahnya
tidak di Malang.
Pada bagian ini kita juga menggunakan perintah WHERE untuk membatasi data yang
ingin kita tampilkan. Tabel yang kita gunakan adalah tabel guru dan kolom yang kita
butuhkan adalah kolom nama, alamat dan kota. Pernyataan yang rumahnya tidak di
Malang merupakan kondisi yang harus dipenuhi. Sehinga secara lengkap pernyataan
akan tampak seperti berikut.

Contoh 12.8. Menampilkan data nama siswa dan program keahlian yang diikuti.
Pada contoh ini kita melibatkan dua buah tabel yang saling berhubungan yaitu tabel
Siswa dan tabel Program. Yang kita ingin tampilkan adalah kolom Nama pada tabel
Siswa dan kolom NamaProgram pada tabel Program. Untuk kasus seperti ini pada
perintah SELECT pemanggilan nama kolom harus didahului dengan nama tabelnya.
Sedangkan pada FROM kita menggunakan perintah INNER JOIN untuk menggabung
dua tabel. Perlu kalian cermati (lihat Tabel 12.1 di atas), pada tabel Siswa terdapat
Foreign Key yaitu IdProgram yang merupakan Primary Key pada tabel Program.
IdProgram ini merupakan penghubung yang dapat kita gunakan untuk menggabung
dua tabel. Perhatikan pernyataan SQL berikut ini dan cermati outputnya.

Rekayasa Perangkat Lunak 353


Contoh 12.9. Menampilkan data nama siswa yang mengikuti program keahlian RPL.
Contoh ini merupakan kelanjutan dari contoh 12.4. Kita menambahkan pernyataan
WHERE untuk menampilkan nama yang ikut program keahlian RPL. Selain itu kita
hanya ingin menampilkan kolom Nama dari tabel Siswa. Perhatikan pernyataan SQL
berikut dan hasil eksekusinya.

Contoh 12.10. Menampilkan data nama guru dan bidang keahliannya.


Contoh ini lebih kompleks dari contoh-contoh di atas. Kita melibatkan tiga buah tabel,
yaitu tabel Guru, tabel Guru_Bidang dan tabel Bidang. Perhatikan relasi antar tabel
tersebut pada Gambar 12.11. Ada dua INNER JOIN yang kita gunakan, yaitu INNER
JOIN tabel Guru dengan tabel Guru_Bidang dan INNER JOIN Guru_Bidang dengan
tabel Bidang. Perhatikan bagaimana membuat pernyataan INNER JOIN.

Contoh 12.11. Menampilkan data nama guru yang bidang keahliannya Pemrograman
Web atau Basis Data.
Contoh ini merupakan pengembangan dari contoh 12.10. Kita ingin menampilkan
guru yang bidang keahliannya Pemrograman Web atau Basis Data. Kita perlu

354 Basis Data Berbasis SQL


menambahkan perintah WHERE untuk membatasi baris. Pada WHERE kita juga perlu
operator OR. Perhatikan perintah SQL dan hasil eksekusinya berikut ini.

Bandingkan dengan hasil eksekusi contoh 12.10. Cobalah ganti OR dengan AND dan
jalankan kembali perintah SQL tersebut. Bagaimanakah hasilnya?
Contoh-contoh di atas dapat dikembangkan lagi dengan banyak variasi.
Dengan banyak mencoba dan berlatih maka kalian akan dapat memahami dengan
baik penggunaan perintah-perintah SQL.

12.7. FUNGSI, PROCEDURE DAN TRIGGER


Microsoft SQL Server menyediakan fasilitas-fasilitas tingkat lanjut yang tidak
dimiliki oleh Microsoft Access seperti kemampuan membuat fungsi, mendefinisikan
store procedure dan trigger. Hal ini karena SQL Server diperuntukkan sebagai basis
data server yang membutuhkan kinerja yang lebih kuat dari Microsoft Access.

12.7.1. FUNGSI
T-SQL menyediakan banyak fungsi yang digunakan untuk mempermudah
tugas-tugas dalam pengelolaan basis data. Beberapa fungsi penting akan
disampaikan di sini. Untuk lebih lengkapnya silahkan baca manual atau online-help
dari SQL Server.

• Fungsi-fungsi yang berhubungan dengan numeric


Fungsi-fungsi penting yang berhubungan dengan numeric (angka) adalah
isNumeric dan Round. Fungsi isNumeric digunakan untuk memeriksa apakah isi
suatu data berupa data angka atau tidak. Buka jendela Query kemudian
ketikkan perintah seperti pada contoh 12.12 dan periksalah hasilnya. Tabel
Siswa mempunyai kolom Telepon yang isi datanya sekilas berupa angka. Kita
dapat memeriksa dengan menggunakan fungsi isNumerik. Pada hasil eksekusi
di bawah ini terlihat nilai hasil pemeriksaan menghasilkan angka 0 untuk

Rekayasa Perangkat Lunak 355


seluruh data. Angka 0 berarti false. Berarti, semua data pada kolom Telepon
bukan data numeric.
Contoh 12.12. Menggunakan fungsi isNumeric.

Fungsi ROUND digunakan untuk membulatkan bilangan pecahan ke bilangan


bulat terdekat. Misalnya 13.58 akan menjadi 14.00. Perhatikan contoh berikut
ini.
Contoh 12.13. Menggunakan fungsi Round.

• Fungsi-fungsi yang berhubungan dengan string


Fungsi-fungsi penting yang berhubungan dengan karakter (string) antara lain
adalah LEFT, RIGHT, LEN, LOWER, UPPER, LTRIM, dan RTRIM.
LEFT digunakan untuk memilih sejumlah karakter tertentu dari sebelah kiri
sedangkan RIGHT dari sebelah kanan. Hasil dari RIGHT tergantung dari lebar
data yang kalian tetapkan pada pembuatan table. LEN digunakan mengetahui
panjang karakter pada data. Perhatikan contoh berikut.

356 Basis Data Berbasis SQL


Contoh 12.14. Menggunakan LEFT, RIGHT dan LEN.

LOWER digunakan untuk merubah karakter menjadi huruf kecil, sedangkan


UPPER sebaliknya. LTRIM digunakan untuk menghilangkan space di sebelah
kiri data string, sedangkan RTRIM di sebelah kanan. Lihat contoh berikut.
Contoh 12.15. Menggunakan fungsi UPPER dan LOWER.

• Fungsi-fungsi yang berhubungan dengan waktu


Fungsi-fungsi yang berhubungan dengan waktu yang penting antara lain:
GETDATE, MONTH, DAY, YEAR, DATENAME, DATEADD, and DATEDIFF.
GETDATE digunakan untuk mendapatkan tanggal sekarang dari system
computer. MONTH digunakan untuk mengambil bagian bulan dari data
tanggal. DAY digunakan untuk mengambil bagian tanggal dari data tanggal.
YEAR digunakan untuk mengambil bagian tahun dari data tanggal. DATENAME
digunakan untuk mendapatkan nama hari dari suatu tanggal. DATEADD
digunakan untuk menambah atau mengurangi data tanggal. DATEDIFF

Rekayasa Perangkat Lunak 357


digunakan untuk melihat selisih antara dua buah data tanggal. Perhatikan
contoh berikut.
Contoh 12.16. Menggunakan fungs-fungsi waktu.

12.7.2. Procedure dan Stored Prosedure


Selain fungsi-fungsi yang tersedia di atas, SQL Server juga memperkenalkan
user-defined function. Fungsi ini adalah fungsi yang dapat kita buat sendiri untuk
mempercepat pengelolaan basis data. Kadang-kadang fungsi jenis ini disebut juga
procedure. Ada dua tipe user defined function yaitu scalar dan inline table-value.
Fungsi scalar menghasilkan satu nilai keluaran melalui kata kunci Return. Inline
Table-Value menghasilkan suatu table baru ketika dieksekusi. Perhatikan contoh
berikut.
Contoh 12.17. Membuat fungsi scalar.
Fungsi yang ada di samping ini diberi
nama dbo.FullName. Parameter yang
digunakan ada dua yaitu @FirstName
dan @LastName. Perhatikan
bagaimana mendefinisikan suatu
fungsi dan parameternya.
Output dari fungsi akan bertipe data
nVarChar dengan lebar data 35.
Fungsi ini akan memberikan output
satu nilai yaitu gabungan dari
@LastName dan @Firstname.
Sehingga kita bisa nyatakan ini
termasuk dalam fungsi scalar.
Pada kode yang di blok, terlihat
bagaimana fungsi tersebut dipanggil
pada suatu pernyataan query.
Perhatikan output yang dihasilkan.
Terbentuk kolom baru yang berisi
gabungan kolom LastName dan
FirstName.
Stored procedure adalah potongan kode program yang dapat menerima
parameter input dan menghasilkan satu atau lebih parameter output. Stored

358 Basis Data Berbasis SQL


procedure umumnya digunakan untuk operasi-operasi pada basis data. Biasanya
suatu perintah SQL yang rumit, panjang dan kompleks disimpan sebagai stored
procedure. Jika kita ingin melakukan operasi tersebut kita tidak perlu mengetik ulang,
cukup kita panggil nama stored procedure dan kita eksekusi langsung.
Perintah untuk membuat stored procedure adalah CREATE PROCEDURE
kemudian diikuti dengan nama procedure-nya. Perhatikan contoh berikut ini.
Contoh 12.18. Membuat stored procedure.
Buka jendela Query, kemudian ketikkan kode berikut ini.
CREATE PROCEDURE hapusBaris
@IdNumber smallint
AS
DELETE
FROM dbo.Bidang Where dbo.Bidang.IdBidang = @IdNumber
Procedure yang kita buat ini bernama hapusBaris dengan satu parameter yaitu
@IdNumber dengan tipe data smallint. Pernyataan setelah AS adalah pernyataan SQL
yang akan dikerjakan ketika stored procedure di atas dijalankan.

12.7.3. Trigger
Trigger adalah tipe khusus dari stored procedure yang akan dieksekusi ketika
suatu kejadian muncul. Kejadian tersebut misalnya ketika ada penambahan data
(INSERT), penghapusan data (DELETE) atau perubahan data (UPDATE). Trigger
biasanya merupakan komponen dari suatu table.
Cara membuatnya adalah klik node di depan table yang anda pilih. Setelah
muncul daftar komponen table tersebut klik kanan pada Trigger dan pilih New Trigger.
SQL Server akan menampilkan jendela baru yang isinya adalah template dari Trigger.
Hapus semua teks pada jendela tersebut kemudian ketikkan contoh berikut ini.
Contoh 12.19. Membuat trigger.
CREATE TRIGGER coba_trigger
ON dbo.Bidang FOR INSERT
AS
DECLARE @varNama Varchar(20)
SELECT @varNama = NamaBidang FROM INSERTED
PRINT 'Anda baru memasukan data : ' + @varNama
Trigger di atas berada pada table Bidang. Nama triggernya adalah coba_trigger
dan akan dijalankan ketika event pemasukkan data (INSERT) pada table dbo.Bidang
terjadi.

Rekayasa Perangkat Lunak 359


12.8. ADMINISTRASI SQL SERVER

12.8.1. Security dan Authentication.


Security atau keamanan basis data merupakan komponen yang sangat penting.
Karena sifatnya yang berperan sebagai server maka sebenarnya SQL Server secara
teori dapat diakses oleh siapa saja. Hal ini tentu akan sangat merugikan jika ada
pihak-pihak yang tidak bertanggung jawab melakukan perubahan, perusakan atau
bahkan menghapus basis data yang kita buat dengan susah payah.
SQL Server menyediakan mekanisme Authentication untuk membatasi siapa
yang berhak masuk ke dalam sistem SQL Server. Ada dua model authentication yaitu
Windows Authentication dan SQL Server Authentication.
• Windows Authentication. Pada model ini SQL Server tidak melakukan
pengecekan pada user name dan password yang diberikan namun dipercayakan
pada system operasi Windows. Artinya sebenarnya hanya user yang terdaftar
pada computer tersebut yang mungin bisa masuk pada SQL Server.
• SQL Server Authentication. Informasi user name dan password disimpan dalam
SQL Server sehingga setiap kali ada user yang akan masuk koneksi ke SQL
Server, SQL Server akan memeriksanya.
Untuk melihat model authentication apa yang ada di SQL Server, klik kanan
pada nama server di jendela Object Explorer kemudian pilih Properties. Pada jendela
Server Properties pilih bagian Security sehingga tampilan akan tampak seperti pada
Gambar 12.22.

360 Basis Data Berbasis SQL


Gambar 12.22. Halaman security pada jendela Server Properties.

Untuk menambahkan user yang bisa masuk ke SQL Server, klik node pada
Security di Object Explorer, kemudian klik kanan Logins. Pilih New Logins untuk
membuka jendela Login seperti pada Gambar 12.23. Buat user baru yang kalian
inginkan.

Rekayasa Perangkat Lunak 361


Gambar 12.23. Jendela untuk membuat user baru.

12.8.2. Permissions
Permissions berhubungan dengan hak akses seorang user pada suatu basis
data. Seorang yang sudah terdaftar sebagai user pada SQL Server tidak secara
otomatis bisa menggunakan basis data yang ada jika belum diberi hak. Untuk
mengubah hak user pada basis data tertentu, klik node pada Logins. Klik kanan pada
nama user yang terdaftar di bawah Logins kemudian pilih Properties. Pada jendela
Login Properties, pilih bagian User Mapping sehingga tampilan akan tampak seperti
pada Gambar 12.24.

362 Basis Data Berbasis SQL


Gambar 12.24. Hak akses basis data oleh user.

Gambar di atas menunjukka user dengan nama sa merupakan pemilik


(db_owner) dari beberapa basis data (lihat basis data yang dicentang). Kita dapat
mengatur peran (role) seorang member pada basis data dengan mencentang atau
tidak pada bagian Database role membership.

12.9. RINGKASAN
• Data Definition Language (DDL) adalah satu paket bahasa DBMS yang berguna
untuk melakukan spesifikasi terhadap skema basis data sedangkan Data
Manipulation Language (DML) adalah satu paket DBMS yang memperbolehkan
pemakai untuk mengakses atau memanipulasi data sebagaimana yang telah
diorganisasikan sebelumnya dalam model data yang tepat.
• SQL lebih menekankan pada aspek pencarian dari dalam tabel hal ini karena
pencarian adalah inti dari pengelolaan data.
• Pembuatan Tabel dan View pada SQL server dapat dilakukan dengan cara GUI
atau dengan menggunakan perintah-perintah SQL.
• Perintah utama SQL adalah SELECT, FROM dan WHERE.
Rekayasa Perangkat Lunak 363
• Microsoft SQL Server menyediakan fasilitas fungsi built-in dan user-defined
function.
• Stored procedure adalah potongan kode program yang dapat menerima
parameter input dan menghasilkan satu atau lebih parameter output. Trigger
adalah tipe khusus dari stored procedure yang akan dieksekusi ketika suatu
kejadian muncul
• SQL Server menyediakan mekanisme Authentication untuk membatasi siapa
yang berhak masuk ke dalam sistem SQL Server dengan dua model yaitu
Windows Authentication dan SQL Server Authentication. Selain itu keamanan
data juga diatur dengan cara pemberian permissions.

12.10. SOAL-SOAL LATIHAN


1. Buatlah tabel baru dengan menggunakan fasilitas GUI pada basis data Lat-
01 dengan nama MataPelajaran dan kolom-kolomnya adalah:
IdMatapelajaran, Nama, Deskripsi, Semester, dan JamPertemuan. Kolom
Semester menunjukkan pada semester berapa mata pelajaran tersebut di
ajarkan sedangkan JamPertemuan menunjukkan berapa jam pertemuan
mata pelajaran tersebut di ajarkan (kedua kolom ini menggunakan tipe
data numeric, kalian bisa memilih smallint atau int pada tipe datanya).
Isilah tabel tersebut dengan mata pelajaran di sekolahmu.
2. Bagaimanakah perintah-perintah SQL untuk pembuatan tabel pada no 1.
3. Pada kondisi nyata ada hubungan antara mata pelajaran dan Guru. Yaitu
Guru mengajarkan mata pelajaran. Buatlah hubungan antara tabel Guru
dengan tabel MataPelajaran pada Database Diagrams. Jika perlu
tambahkan kolom baru atau tabel baru yang bisa menjamin hubungan
tersebut benar (Petunjuk: tentukan dulu kardinalitas hubungan apakan
one-to-many ataukah many-to-many)
4. Buatlah View dengan perintah SQL untuk pernyataan-pernyataan berikut:
a. Tampilkan semua data mata pelajaran.
b. Tampilkan nama mata pelajaran yang diajarkan pada semester 3 ke
atas (Petunjuk: gunakan tanda >, <, >= dan <= pada perintah
WHERE)
c. Tampilkan nama pelajaran yang diajarkan kurang dari 3 kali
pertemuan.
d. Tampilkan semua nama pelajaran dan nama guru yang
mengasuhnya.
e. Tampilkan nama pelajaran dan nama guru yang mengasuhnya
untuk mata pelajaran yang diajarkan di semester 4.

364 Basis Data Berbasis SQL


Jika kita sering
berselancar di dunia internet
kita akan sering menjumpai
halaman-halaman web
seperti pada Gambar 13.1. di
samping ini. Halaman web
ini ada yang bersifat statis
tetapi juga ada yang dinamis.
Tetapi apapun sifatnya,
halaman-halaman tersebut
hampir pasti melibatkan
bahasa HTML.
Bab ini membahas dua
standar kompetensi yaitu
menerapkan dasar-dasar
pembuatan web statis tingkat
dasar dan membuat file
HTML sesuai spesifikasi. Gambar 13.1. Halaman web.
Penggabungan dua
kompetensi ini karena kedekatan isi kompetensi dasar. Standar kompetensi membuat
file HTML sesuai spesifikasi terdiri dari empat kopetensi dasar yaitu menetapkan
pemakaian struktur file, membuat struktur file HTML, memformat file dan
menambahkan obyek. Standar kompetensi menerapkan dasar-dasar pembuatan web
statis tingkat dasar juga terdiri dari empat kompetensi dasar yaitu menjelaskan
konsep dasar dan teknologi web, mempersiapkan pembuatan web, melakukan
pembuatan web, dan menampilkan web di browser.
Rangkuman diletakkan pada akhir bab dilanjutkan dengan soal-soal latihan
yang disusun dari soal-soal yang mudah hingga soal-soal yang sulit. Latihan soal ini
digunakan untuk mengukur kemampuan terhadap kompetensi dasar ini. Sebelum
mempelajari kompetensi ini ingatlah kembali dasar sistem komputer, sistem operasi,
dan algoritma pemrograman dasar.

Rekayasa Perangkat Lunak 365


TUJUAN
Setelah mempelajari bab ini diharapkan kalian akan mampu :
o Menjelaskan konsep dasar dan teknologi web
o Menetapkan pemakaian dan struktur dokumen
o Mempersiapkan pekerjaan pembuatan web
o Melakukan pembuatan dokumen web baru dan menampilkan
dalam web browser
o Membuat struktur dokumen dengan bahasa HTML
o Memformat dokumen dan menambahkan obyek
o Membuat tabel
o Membuat link antar dokumen

13.1. KONSEP DASAR DAN TEKNOLOGI WEB


World Wide Web secara luas lebih dikenal dengan istilah Web. Web pertama
kali diperkenalkan pada tahun 1992. Hal ini sebagai hasil usaha pengembangan yang
dilakukan CERN di Swiss. Internet dan web adalah dua hal yang berbeda. Internet
lebih merupakan perangkat keras, sedangkan web adalah perangkat lunak. Selain itu,
protokol yang dipakai oleh keduanya juga berbeda. Internet menggunakan TCP/IP
sebagai protokol operasionalnya, sedangkan web menggunakan HTTP (Hyper Text
Transfer Protocol).
Web disusun dari halaman-halaman yang menggunakan teknologi web dan
saling berkaitan satu sama lain. Suatu standar teknologi web saat ini sudah tersusun,
meskipun penerapannya belum didukung oleh seluruh pengembang web. Standar ini
disusun oleh suatu badan yaitu World Wide Web Consortium (W3C). Standar ini
dibutuhkan karena semakin banyaknya variasi dalam teknologi web sehingga
terkadang satu sama lain tidak kompatibel.

13.1.1 Standar Teknologi Web


Secara umum teknologi disain web terbagi menjadi beberapa layer (lapisan),
yaitu structural layer, presentation layer dan behavioral layer.
• Structural layer
Layer ini berhubungan dengan struktur dokumen dokumen web. Bagaimana
sebuah dokumen tersusun, format apa yang dipakai, tanda atau mark up apa
yang digunakan merupakan bagian dari layer ini. Standar teknologi yang
direkomendasikan saat ini adalah Extensible Hypertext Markup Language
(XHTML) dan Extensible Markup Language (XML). XHTML adalah HTML versi
terakhir (4.01) yang ditulis ulang dengan dengan aturan-aturan yang lebih ketat
mengacu pada XML. Sedangkan XML adalah sekumpulan aturan untuk
menyusun bahasa markup.

366 Disain Web Statis dan HTML


• Presentation layer
Layer ini berhubungan dengan bagaimana mengatur tampilan dokumen pada
layar, suara yang keluar, atau bagaimana format pencetakan dokumen. Pada
teknologi web lama bagian ini menyatu dengan structural layer. Tapi pada
standar baru, layer ini disarankan untuk dipisah. Yang termasuk teknologi ini
adalah Cascading Style Sheets (CSS).
• Behavioral layer
Layer ini berhubungan dengan masalah penggunaan bahasa skrip dan
pemrogramannya untuk tujuan meningkatkan sisi interaktif dan dinamis
halaman web. Yang termasuk dalam layer ini adalah Document Object Model
(DOM) dan JavaScript. DOM memungkinkan suatu dokumen atau skrip untuk
mengakses atau meng-update isi, struktur, dan style dari dokumen. JavaScript
merupakan teknologi yang cukup lama dan tetap digunakan untuk menambah
dokumen menjadi lebih interaktif.

13.1.2. Web Statis dan Web Dinamis.


Halaman web dapat digolongkan menjadi web statis dan web dinamis.
Pengertian web statis dan web dinamis seringkali mengundang perdebatan. Sebagian
pengguna internet menyatakan jika pada halaman-halaman web dilengkapi dengan
animasi yang bergerak maka disebut web dinamis sedangkan jika halaman-halaman
web tersebut hanya berisi teks dan gambar yang tidak bergerak maka disebut web
statis. Namun berdasarkan kesepakatan maka pengertian statis dan dinamis tidak
ditentukan oleh ada atau tidaknya animasi bergerak pada halaman-halaman web,
tetapi ditentukan oleh isi atau informasi yang ada pada halaman-halaman tersebut.
Data dan informasi yang ada pada web statis tidak berubah-ubah. Dokumen
web yang dikirim kepada client akan sama isinya dengan apa yang ada di web server.
Sedangkan web dinamis, memiliki data dan informasi yang berbeda-beda tergantung
input apa yang disampaikan client. Dokumen yang sampai di client akan berbeda
dengan dokumen yang ada di web server.
Contoh paling mudah untuk membedakan web statis dan web dinamis adalah
bila kalian membuka situs Google. Halaman awal adalah statis karena kita tidak
melihat perubahan isi atau informasi. Halaman ini baik di komputer client maupun di
web server akan sama. Namun begitu kita memasukkan kata pada textbox yang
tersedia kemudian menekan tombol search maka kita sedang berinteraksi dengan web
server Google. Web server akan mengirimkan halaman web sesuai yang diminta oleh
client. Tampilan di sisi client akan berupa daftar alamat dan keterangannya.
Sedangkan di sisi server isi dokumennya adalah serangkain kode-kode untuk mencari
apa yang diinputkan client.
Bab ini secara khusus akan mempelajari tentang pembuatan web statis
sedangkan web dinamis akan kita bahas di bab 14.

Rekayasa Perangkat Lunak 367


13.2. PERSIAPAN PEMBUATAN WEB
Pembuatan halaman web membutuhkan persiapan tidak saja pengetahuan
tentang bagaimana disain halaman web, namun juga perlu dukungan persiapan
perangkat keras, perangkat lunak, dan yang lainnya.

13.2.2. Perangkat Keras


Perangkat keras yang dibutuhkan untuk pembuatan halaman web tidak
berbeda jauh dengan kebutuhan komputasi biasa. Seperangkat komputer lengkap
dengan CPU, monitor, keyboard, mouse, printer dan beberapa perangkat tambahan
lain sudah dapat digunakan untuk membuat halaman web. spesifikasi tergantung dari
perangkat lunak yang akan diinstal pada perangkat komputer tersebut. Jika kita
menginstal web server, pengolah gambar untuk disain halaman web, HTML editor
yang komplet, tentu kita membutuhkan spesifikasi yang lebih tinggi.

13.2.3. Perangkat Lunak


• Sistem operasi
Sistem operasi memegang peranan penting dalam pembuatan web karena pada
sistem operasi itu akan ditanamkan (diinstal) web server, web editor, sistem
manajemen basis data dan bahasa pemrograman. Artinya pilihan pada sistem
operasi tertentu akan menentukan pula pilihan web server, perangkat
pengembang dan bahasa pemrograman yang akan digunakan. Hal ini
dikarenakan adanya masalah kompatibilitas antar perangkat lunak. Sebagai
contoh, apabila kita memilih menggunakan sistem operasi Linux maka kita tidak
dapat menginstal IIS sebagai web server.
Selain masalah kompatibilitas, hal lain yang juga perlu dipertimbangkan dalam
penentuan sistem operasi yang akan kita gunakan pada server adalah masalah
keamanan, stabilitas, kemudahan konfigurasi. Keamanan berhubungan dengan
kemampuan sistem operasi untuk melindungi diri dari serangan virus, spam,
atau kode-kode jahat yang sengaja disusupkan. Kemampuan ini sangat
penting diperhatikan karena lalu lintas data dalam internet sangat rentan
terhadap gangguan virus, spam, dan pengganggu lainnya. Stabilitas
berhubungan dengan kemampuan sistem operasi untuk bekerja terus-menerus
untuk merespon permintaan client. Kemudahan konfigurasi berhubungan
mudah tidaknya konfigurasi dilakukan terhadap sistem operasi dalam perannya
sebagai server.

• Web Server
Web server adalah perangkat lunak yang bertindak melayani permintaan-
permintaan client terhadap halaman-halaman web tertentu. Ada beberapa

368 Disain Web Statis dan HTML


nama yang cukup populer dalam dunia web server. Diantaranya adalah Apache
dan IIS (Internet Information Service). Sampai dengan Desember 2007,
wikipedia mencatat Apache berada dalam posisi pertama sebagai web server
yang paling banyak digunakan, disusul IIS.
Apache dapat digunakan baik untuk web statis maupun web dinamis dan
mendukung banyak platform sistem operasi dan bahasa pemrograman server,
antara lain Perl, Phyton, Java (JSP dengan menggunakan Tomcat) dan tentu
saja PHP. Fungsi-fungsi keamanan web juga dikendalikan dengan sangat baik.
Dukungan pada koneksi dengan berbagai basis data, seperti MySQL, SQL Lite,
PosgreSQL, Oracle, DB2 dan lain-lain dapat dilakukan dengan baik. Gambar
13.2 menunjukkan bagaimana web server Apache (httpd) digunakan di Linux.

Gambar 13.2. Menjalankan service Apache (httpd) pada Linux.

IIS adalah web server keluaran Microsoft. Sebutan web server bagi IIS
mungkin tidak terlalu tepat, karena selain web server, IIS juga memberikan
fasilitas file server, email server dan layanan lain berbasis internet. Oleh karena
itu istilah yang tepat mungkin adalah internet based-service. Perangkat lunak
ini dibundel dalam sistem operasi Microsoft Windows. Namun secara default
tidak langsung diinstall. Sehingga kalau kita mau menggunakannya kita harus
menginstall lebih dulu. Gambar 13.3 menunjukkan bagaimana IIS diinstall.

Rekayasa Perangkat Lunak 369


Gambar 13.3. Memeriksa dan menginstal IIS.

• Web / HTML Editor


Web / HTML Editor adalah perangkat lunak yang digunakan untuk membuat
halaman-halaman web, baik yang bersifat statis maupun dinamis. Di pasar
perangkat lunak, saat ini tersedia banyak sekali jenis perangkat pengembang
web, mulai dari yang sederhana sampai yang canggih dan kompleks. Namun
sebenarnya untuk membuat halaman web baik statis maupun dinamis kita
dapat menggunakan teks editor biasa seperti Notepad atau Vi. Hanya saja teks
editor tidak menyediakan fasilitas-fasilitas yang memudahkan kita dalam

370 Disain Web Statis dan HTML


membuat halaman web. Pada perangkat pengembang web yang lebih
kompleks seperti Adobe Dreamweaver (dulu Macromedia Dreamweaver),
Microsoft Visual Studio .Net, dan beberapa yang lainnya, kita akan mendapati
fasilitas yang sangat membantu mempercepat pembuatan halaman web, antara
lain: tampilan berbasis GUI, automatic code completion (melengkapi kode
secara otomatis), WYSIWYG (What You See Is What You Get) HTML Editor,
koneksi ke basis data yang lebih mudah, dan banyak lagi fasilitas. Tentu saja
perangkat pengembang ini berharga relative mahal. Pada bagian lain dari bab
ini kalian akan diajak untuk mengenali sedikit beberapa perangkat lunak ini.

• Web Browser
Web browser berfungsi menerjemahkan kode-kode HTML menjadi tampilan
yang kita kehendaki. Ada banyak Web Browser tersedia di internet. Hampir
semuanya dapat kita download secara bebas. Beberapa nama yang cukup
terkenal antara lain Microsoft Internet Explorer, Firefox, Opera atau Safari.
Microsoft Internet Explorer adalah default web browser pada sistem operasi
Microsoft Windows (lihat Gambar 13.4). Firefox adalah default web browser
pada sebagian besar sistem operasi Linux. Safari adalah default web browser
pada sistem operasi Mac OS X (lihat Gambar 13.5). Sedangkan Opera adalah
web browser keluaran Opera Software yang dapat berjalan pada berbagai
platform sistem operasi (Gambar 13.6).

Gambar 13.4. Microsoft Internet Explorer.

Rekayasa Perangkat Lunak 371


Gambar 13.5. Safari.

Gambar 13.6. Opera.

372 Disain Web Statis dan HTML


13.3. MEMBUAT DAN MENGUJI HALAMAN WEB
Ada dua model dalam pembuatan halaman web statis. Yang pertama adalah
membuat halaman-halaman tersebut pada komputer lokal, kemudian setelah berhasil
dipindahkan ke lokasi di web server. Model kedua adalah langsung membuat
halaman-halaman web di lokasi web server. Lokasi web server dapat berada di satu
komputer yang sama dengan tempat pembuatan halaman web atau di komputer lain
yang berperan sebagai server. Cara pertama lebih mudah dilakukan karena tidak
membutuhkan kerja web server di tahap disain. Pada bagian ini kita akan mencoba
cara ini.
Buatlah direktori pada komputer kalian. Jika kalian menggunakan sistem
operasi Windows, kalian tinggal buka Windows Explorer kemudian klik kanan pada
area Windows eksplorer dan pilih New kemudian pilih Folder. Beri nama misalkan
LatihanWeb. Jika kalian menggunakan Linux, buka file manager yang tersedia
misalnya Konqueror, Nautilus, atau Thunar. Lakukan cara yang sama seperti pada
Windows Explorer.
Umumnya suatu situs web tidak hanya berisi satu halaman web tetapi
kumpulan dari beberapa halaman web yang saling berkait. Biasanya pengembang
web membuat struktur direktori untuk mempermudah pengaturan halaman.
Perhatikan struktur direktori sebuah situs web pada Gambar 13.7.

Gambar 13.7. Contoh Struktur direktori situs web.

Halaman awal suatu situs web biasanya berupa halaman web yang diberi nama
homepage. Biasanya filenya diberi nama index.html (atau bisa juga index.php,
index.jsp, index.asp jika menggunakan bahasa skrip server). Di dalam direktori yang
sama dengan index.html ini biasanya ada direktori-direktori lain yang berisi halaman-

Rekayasa Perangkat Lunak 373


halaman yang dikelompokkan berdasarkan kedekatan tema atau berdasarkan
pengelompokkan lain. Selain itu ada direktori lain yang digunakan untuk menyimpan
elemen-elemen yang digunakan dalam halaman web. biasanya berisi file-file gambar,
teks, audio, video atau elemen-elemen yang lain.
Buatlah struktur direktori seperti di atas dengan cara menambahkan sub
direktori di bawah direktori LatihanWeb yang telah kalian buat. Beri nama sesuai
keinginan kalian, tetapi usahakan nama direktori menunjukkan apa isi dari direktori
tersebut. Buka teks editor, misalkan Notepad kemudian ketikkan kode berikut ini.
<HTML>
<HEAD>
<TITLE>Homepage</TITLE>
</HEAD>
<BODY>
Ini halaman index pertamaku
</BODY>
</HTML>
Simpan dengan nama index.html dan letakkan di direktori LatihanWeb (Gambar
13.8). Untuk menguji file tersebut, klik ganda pada file index.html. kalian akan
mendapatkan tampilan seperti pada Gambar 13.9.

Gambar 13.8. File index.html dan lokasi penyimpanannya.

374 Disain Web Statis dan HTML


Gambar 13.9. Hasil pengujian file index.html.

13.4. HTML
13.4.1. Pengertian HTML
Gambar 13.8 dan 13.9 menunjukkan pada kalian bagaimana membuat halaman
web sederhana. Halaman web yang kalian buat ini menggunakan bahasa yang
disebut HTML (Hypertext Markup Language). HTML merupakan pengembangan dari
standar pemformatan dokumen teks yaitu Standard Generalized Markup Language
(SGML). HTML sebenarnya adalah dokumen ASCII atau teks biasa yang dirancang
untuk tidak tergantung pada suatu sistem operasi tertentu.
HTML dibuat oleh Tim Barners-Lee ketika masih bekerja untuk CERN. HTML
dipopulerkan pertama kali oleh browser Mosaic. Selama awal tahun 90’an, HTML
mengalami perkembangan yang sangat pesat. Setiap pengembangan HTML pasti akan
menambahkan kemampuan dan fasilitas yang lebih baik daripada versi sebelumnya.
Perkembangan yang pesat tersebut tidak sampai merubah cara kerja HTML.
Sebuah dokumen atau file HTML agar dapat dibaca langsung oleh browser
disimpan dalam ekstensi .htm atau .html. Untuk menulis HTML tidak dibutuhkan
perangkat lunak yang spesifik, cukup dengan text editor sederhana seperti Notepad
(pada Microsoft Windows) atau beragam text editor yang ada di platform Linux dan
Apple Mac OS, seperti vi, nano, joe, gedit, leafpad dan lain-lain. Beberapa editor
menyediakan fitur-fitur tambahan seperti syntax coloring (memberi warna pada kode-
kode HTML) dan code completion (melengkapi secara otomatis kode yang akan
dituliskan). Saat ini telah banyak perangkat lunak berbasis GUI yang sangat
membantu dalam pembuatan halaman-halaman HTML. Macromedia Dreamweaver
dan Microsoft Frontpage merupakan dua nama yang cukup populer di platform
Microsoft Windows. Sedangkan di Linux tersedia Quanta+, Bluefish dan Nvu.

Rekayasa Perangkat Lunak 375


Gambar 13.10. Teks editor Notepad.

Gambar 13.11. Macromedia Dreamweaver.

376 Disain Web Statis dan HTML


Gambar 13.12. Quanta pada sistem operasi Linux

Gambar 13.13. Bluefish pada sistem operasi Linux

Rekayasa Perangkat Lunak 377


13.4.2. Struktur Umum File dengan Bahasa HTML
HTML adalah bahasa yang disisipkan (embedded language) pada dokumen
dengan memberi tanda tertentu yang disebut tag. Tag merupakan aturan penulisan
kode yang ditulis dengan diawali tanda lebih kecil dan di akhiri dengan tanda lebih
besar (<tag>). Browser akan menentukan tampilan teks atau dokumen berdasarkan
tag yang digunakan.
Sintaks penulisan tag mengikuti aturan-aturan umum berikut ini:
a) Setiap tag mempunyai nama yang spesifik. Kadang-kadang diikuti opsi-opsi yang
disebut atribut. Baik nama maupun opsi harus berada dalam tanda <..>.
Contoh:
<a href="/wiki/PHP" title="PHP">PHP</a>
Pada contoh ini tagnya memiliki nama <a> sedangkan atribut untuk tag <a>
adalah href dan title. Sehingga baik nama tag dan atributnya harus berada
di dalam tanda <…> seperti pada contoh.
b) Sebagian besar tag berpasangan. Penulisan untuk tag yang berpasangan adalah
sebagai berikut : <namatag>….</namatag>
Contoh:
<TITLE>Paragraf</TITLE>
<strong>Cetak Tebal</strong>
Pada tag yang berpasangan seperti pada contoh ini, <TITLE> adalah tag awal
dan </TITLE> adalah tag akhir. Perhatikan tanda / pada tag akhir.
c) Nama tag dan atribut-nya tidak bersifat case sensitive. Penulisan
<strong>Cetak Tebal</strong> memberikan hasil yang sama dengan
<STRONG>Cetak Tebal</STRONG>.
d) Penulisan atribut suatu tag diletakkan setelah nama tag. Jika ada lebih dari satu
atribut maka digunakan spasi untuk memisahkan. Urutan atribut tidak penting.
Contoh:
<FONT SIZE=3>Teks Baru</FONT>
<FONT SIZE=5 FACE=“verdana“>Teks Baru </FONT>
e) Nilai dari atribut ditulis setelah tanda sama dengan (=). Pada contoh
sebelumnya (lihat bagian d) terlihat bahwa atribut SIZE dari tag FONT memiliki
nilai 5 sedangkan atribut FACE memiliki nilai “verdana”.
f) Jika nilai dari atribut hanya tunggal, maka kita langsung menuliskan setelah
tanda =. Jika lebih dari satu maka dapat digunakan tanda ‘… ‘ atau “…”. Pada
contoh bagian d, tampak bahwa penulisan nilai untuk atribut SIZE tanpa
menggunakan tanda “..”, sedangkan pada atribut FACE tanda “..” untuk
menandai kata verdana.

378 Disain Web Statis dan HTML


Dokumen HTML secara umum akan terdiri dari dua bagian yaitu Header dan
Body (Gambar 13.14)

Gambar 13.14. Struktur umum dokumen HTML.

• Header
Bagian ini biasanya berisi berbagai macam keterangan tentang dokumen
termasuk title (judul dokumen), posisinya dalam sekumpulan halaman web dan
hubungannya dengan dokumen lain. Bagian ini ditandai dengan tag <head> ….
</head>. Tag ini tidak mempunyai atribut. Di dalam tag ini kita dapat
meletakkan beberapa tag lain seperti tag title dan tag link. Lihat Gambar 13.15
dan 13.16.

Gambar 13.15. Header dokumen HTML tanpa tag title.

Rekayasa Perangkat Lunak 379


Gambar 13.16. Header dokumen HTML dengan tag title.

• Body
Body adalah bagian dari dokumen HTML tempat dimana kita meletakkan isi
dari dokumen. Bagian ini ditandai dengan tag <body> dan diakhiri dengan
</body>. Apapun yang berada diantara dua tanda ini disebut sebagai body
content. Dokumen HTML yang paling sederhana mungkin hanya berisi sebaris
atau dua baris teks saja tanpa format apapun (Gambar 13.17). Pada dokumen
yang lebih kompleks, body content bisa berisi teks yang terformat, gambar, tabel
atau bahkan animasi yang rumit (Gambar 13.18).

Gambar 13.17. Dokumen HTML dengan body content sederhana.

380 Disain Web Statis dan HTML


Gambar 13.18. Dokumen HTML dengan body content yang lebih kompleks.

13.4.3. Format Dokumen


Ada banyak sekali tag HTML yang tersedia, baik itu berhubungan dengan
deskripsi dokumen atau yang berhubungan dengan format tampilan dokumen. Tidak
semuanya akan dibahas dalam buku ini. Pada bagian berikut ini akan dibahas
beberapa tag yang biasa dipakai dalam format tampilan dokumen.
• Heading
Heading adalah sekumpulan kata yang menjadi judul atau subjudul dalam
sebuah dokumen HTML. Heading berbeda dengan tag <TITLE>. HTML
menyediakan enam tingkatan heading, dimana heading level 1 (<H1>) adalah yang
terbesar dan heading level 6 (<H6>) adalah yang terkecil. Gambar 13.19
menunjukkan bagaimana penggunaan heading.

Gambar 13.19. Penggunaan heading.

Rekayasa Perangkat Lunak 381


• Paragraph
Paragraf dalam HTML dibuat dengan tag <P>. Tag ini akan membuat baris
baru dengan menyisipi satu baris kosong. Penulisan isi paragraf diapit oleh <P>
dan </P>. Pengaturan posisi paragraf dapat dilakukan dengan atribut ALIGN yang
diikuti dengan posisi yang diinginkan, yaitu left untuk rata kiri, center untuk
rata tengah horisontal dan right untuk rata kanan (Lihat Gambar 13.20).

Gambar 13.20. Penggunaan paragraph.

• Line Break
Line break digunakan untuk menuliskan teks pada baris berikutnya. Line
break dibuat dengan tag tunggal <BR>. Tag ini akan membuat baris baru tanpa
memberi baris kosong sebagaimana pada tag <P> (Lihat Gambar 13.21).

Gambar 13.21. Tag <BR> dan <P>.

• List
HTML menyediakan 3 cara untuk membuat daftar atau list, yaitu

382 Disain Web Statis dan HTML


o Ordered list
Ordered list digunakan untuk membuat daftar dimana setiap bagian
memiliki nomor secara berurutan. Ordered list dimulai dengan tag <OL> dan
diakhiri dengan tag </OL>, sedangkan setiap bagiannya digunakan tag <LI>
tanpa tag penutup. Tag ini menggunakan angka sebagai urutan secara
default, tapi bisa dirubah dengan merubah nilai atribut TYPE. Nilai-nilai
atribut yang diijinkan dapat dilihat pada Tabel 13.1.
Tabel 13.1. Daftar atribut TYPE untuk Ordered list dan Unordered list.
Jenis List Atribut Fungsi
Ordered list TYPE=1 Daftar berurutan dengan angka arab
(1,2,3,...)
TYPE=I Daftar berurutan dengan angka romawi
besar (I,II,III,...)
TYPE=i Daftar berurutan dengan angka romawi
kecil (i,ii,iii,...)
TYPE=A Daftar berurutan dengan abjad besar
(A,B,C,...)
TYPE=a Daftar berurutan dengan abjad kecil
(a,b,c,...)
Unordered TYPE=circle Daftar dengan tanda lingkaran
List TYPE=square Daftar dengan tanda tanda kotak
TYPE=disk Daftar dengan tanda cakram

Contoh penggunaan Ordered list dapat dilihat pada Gambar 13.22.

Gambar 13.22. Penggunaan Ordered List.

o Unordered list
Unordered list digunakan untuk membuat daftar yang disajikan tanpa
nomor urut, melainkan dengan secara default dengan tanda bulatan utuh
(bullet). Tanda ini bisa dirubah dengan merubah nilai atribut TYPE untuk
unordered list. Nilai-nilai atribut yang diijinkan dapat dilihat pada tabel 13.1.

Rekayasa Perangkat Lunak 383


Unordered list dimulai dengan tag <UL> dan diakhiri dengan tag </UL>,
sedangkan setiap bagiannya digunakan tag <LI> tanpa tag penutup (lihat
contoh pada Gambar 13.23).

Gambar 13.23. Penggunaan Unordered List.

Tipe lain dari list yang termasuk Unordered list adalah Directory list dan
Menu list. Directory list merupakan daftar tak bernomor yang digunakan
untuk menangani direktori. Tag yang digunakan adalah <DIR> ...
</DIR>. Menu list umumnya digunakan untuk menu pilihan. Tag yang
digunakan adalah <MENU> ... </MENU>. Baik Direktori list maupun Menu
list menghasilkan tampilan yang sama dengan Unordered list (Gambar 13.24
dan Gambar 13.24).

Gambar 13.24. Penggunaan Direktori List

384 Disain Web Statis dan HTML


Gambar 13.25. Penggunaan Menu List

o Definition list
Definition list membuat daftar definisi mirip seperti tampilan pada
kamus, dengan definisi suatu istilah agak menjorok ke kanan. Tiga buah
pasang tag yang terkait dengan definition list adalah:
- <DL> ... </DL> untuk menyatakan tempat bagi daftar definisi.
- <DT> ... </DT> untuk menyatakan tempat bagi istilah yang akan
didefinisikan.
- <DD> ... </DD> untuk menyatakan tempat bagi definisi dari istilah.
Contoh penggunaan Definition list dapat dilihat pada Gambar 13.26.

Gambar 13.26. Penggunaan Definition List.

• Font
HTML menyediakan fasilitas pengaturan huruf yang akan ditampilkan dalam
dokumen. Pengaturan ini dilakukan dengan tag berpasangan <FONT> dan

Rekayasa Perangkat Lunak 385


</FONT>. Tag ini memiliki beberapa atribut untuk mengatur ukuran, jenis dan
warna huruf yang digunakan.
o Atribut SIZE untuk mengatur ukuran huruf, dimana nilai 1 untuk huruf
terkecil dan nilai 7 untuk huruf terbesar.
o Atribut FACE untuk mengatur jenis huruf yang diinginkan, dimana nilainya
berupa string nama font seperti Arial, Tahoma dan sebagainya.
o Atribut COLOR untuk mengatur warna teks yang dikehendaki, dimana nilainya
dapat diisi dengan dua cara dengan menyebut nama warna dalam bahasa
Inggris seperti red, blue dan green atau dengan menggunakan nilai RGB (Red
Green Blue) seperti FF000 untuk merah.

Gambar 13.27. Penggunaan tag Font.

13.4.4. Penambahan Obyek

• Horizontal Line
Untuk mempercantik tampilan halaman HTML, kita dapat menambahkan garis
horizontal dengan tag <HR>. Tag <HR> mempunyai atribut SIZE untuk menentukan
ketebalan garis, atribut WIDTH untuk menentukan lebar garis, Atribut ALIGN untuk
menentukan letak teks dalam garis, dan atribut NOSHADE untuk mengatur agar garis
tidak disertai bayangan. Gambar 13.28 menunjukkan bagaimana tag <HR>
digunakan.

386 Disain Web Statis dan HTML


Gambar 13.28. Penggunaan garis.

• Image
Dokumen HTML dapat diperindah dengan menyertakan gambar pada halaman
web yang dibuat. Tag <IMG> dapat digunakan untuk memanggil dan menampilkan
gambar pada halaman web. Sintaks penulisan tag <IMG> adalah:
<IMG SRC=”file_gambar” ALT=”nama_alternatif”>
Atribut SRC digunakan untuk menentukan sumber file gambar yang akan
ditampilkan. Atribut ALT berfungsi untuk memberi tulisan pengganti, apabila gambar
tidak ditampilkan.

Gambar 13.29. Penggunaan tag image.

Untuk pengaturan gambar yang lebih baik, tag IMG menyediakan beberapa
atribut, antara lain:
• Atribut ALIGN untuk mengatur penempatan teks pada gambar.
• Atribut BORDER untuk memberi bingkai pada gambar.

Rekayasa Perangkat Lunak 387


• Atribut HEIGHT dan WIDTH untuk mengatur tinggi dan lebar gambar.
Contoh berikut ini memperlihatkan penggunaan atribut-atribut tersebut.

Gambar 13.30. Penggunaan atribut-atribut tag IMG.

Pada Gambar 13.30 terlihat perbedaan tampilan dibandingkan dengan Gambar


13.29. Tulisan Logo Linux terletak ditengah gambar karena kita menggunakan atribut
align dengan nilai middle. Sedangkan tulisan logo Windows terletak di bagian atas
karena kita menggunakan align dengan nilai top. Gambar logo windows diberi
garis bingkai dengan menggunakan atribut border dengan nilai 2.

13.4.5. Tabel
Tabel dalam HTML dibuat dengan menggunakan tag awal <TABEL> dan tag
penutup </TABLE>. Tag ini memiliki beberapa bagian penting, seperti dapat dilihat
pada Tabel berikut ini.
Tabel 13.2. Bagian-bagian pada tag Table
Tag Fungsi
<CAPTION>…</CAPTION> Membentuk judul tabel
<TH>…</TH> Membuat judul kolom
<TR>…</TR> Membentuk baris pada suatu tabel
<TD>...</TD> Membuat sebuah sel data

Contoh-contoh penggunaan tabel adalah sebagai berikut:

388 Disain Web Statis dan HTML


Gambar 13.31. Tabel sederhana.

Pada Gambar 13.31, tabel yang kita buat adalah tabel sederhana dengan dua
buah kolom dan 3 buah baris (perhatikan ada 3 buah pasangan tag <TR> … </TR>.
Secara default tabel ditampilkan tanpa ada garis pada tabel tersebut. Kita dapat
menambahkan garis dengan menggunakan atribut border pada tabel (lihat Gambar
13.32).

Gambar 13.32. Tabel dengan format yang lebih kompleks.

Pada Gambar 13.32, terlihat tabel yang tampilannya lebih baik daripada
Gambar sebelumnya. Ada beberapa atribut yang kita tambahkan pada tabel yaitu :

Rekayasa Perangkat Lunak 389


• Atribut WIDTH untuk mengatur lebar tabel pada halaman. Kita dapat
menggunakan satuan persen (%) atau pixel (px).
• Atribut BORDER untuk memberikan garis pada tabel. Nilai untuk atribut ini dari
dimulai dari 0 yang berarti tidak ada garis. Semakin besar angka semakin tebal
garis.
• Atribut BGCOLOR untuk menambahkan warna latar belakang pada tabel.
• Atribut CELLPADDING untuk menentukan jarak antara teks dan tepi kiri sebuah
sel (lihat gambar 13.33 untuk lebih jelasnya).
• Atribut CELLSPACING untuk menentukan jarak bagian sel terhadap tepi dalam
bingkai tabel (lihat gambar 13.33 untuk lebih jelasnya).

Gambar 13.33. Cellpadding, cellspacing dan border.

Seperti halnya perangkat lunak word-processor, pada HTML kita dapat


menggabungkan dua atau lebih sel menjadi satu buah sel. Untuk menggabung baris
dapat digunakan atribut ROWSPAN dan untuk menggabung kolom dapat digunakan
atribut COLSPAN. Contoh penggunaannya dapat dilihat pada Gambar 13.34 dan
13.35.

390 Disain Web Statis dan HTML


Gambar 13.34. Rowspan.

Gambar 13.35. Colspan.

Sel pada tabel tidak selalu harus berisi teks namun dapat juga berisi gambar
seperti terlihat pada Gambar 13.36.

Rekayasa Perangkat Lunak 391


Gambar 13.36. Tabel dengan sel berisi gambar.

13.4.6. Link antar Dokumen


Link merupakan pautan untuk membuka atau memanggil halaman web atau
file tertentu. Link merupakan tag yang sangat penting dalam penggunaan HTML,
karena disinilah letak perbedaan antara dokumen HTML dengan dokumen teks yang
lain. Link dapat dibuat dengan memberi perintah tag anchor <A>. Anchor memiliki
beberapa atribut, diantaranya HREF yang berfungsi untuk membuat link ke dokumen
HTML tertentu dan NAME yang berfungsi untuk memberi tanda/nama titik tertentu
pada dokumen HTML yang sama. Contoh penggunaan tag anchor dapat dilihat pada
Gambar 13.37.

Gambar 13.37. Penggunaan tag anchor.

392 Disain Web Statis dan HTML


Atribut HREF dapat digunakan untuk memanggil halaman web pada sistem
yang sama (pada satu komputer) seperti ditunjukkan pada Gambar 13.37. Pada
kasus ini kita tinggal menuliskan lokasi dimana halaman yang akan kita panggil
berada. HREF dapat juga kita gunakan untuk memanggil halaman lain diluar sistem
kita atau memanggil situs-situs lain di internet. Caranya dengan mengetikkan alamat
URL situs yang akan kita panggil. Cobalah ketikkan kode HTML berikut ini dengan
teks editor kemudian simpan file dengan ekstensi .htm.
DAFTAR ALAMAT MESIN PENCARI
<menu>
<li><a href="http://www.google.com/">Google</a>
<li><a href="http://www.yahoo.com/">Yahoo</a>
<li><a href="http://www.altavista.com/”>Altavista</a>
</menu>

13.5. RINGKASAN
• Teknologi disain web terbagi menjadi beberapa layer (lapisan), yaitu structural
layer, presentation layer dan behavioral layer.
• Web statis adalah halaman web yang isi data dan informasinya tidak berubah-
ubah. Sedangkan web dinamis, memiliki isi data dan informasi yang berbeda-
beda tergantung input apa yang disampaikan client.
• Pembuatan halaman web membutuhkan dukungan persiapan perangkat keras,
perangkat lunak dan pemahaman teknologi pembuatan web.
• HTML (Hypertext Markup Language) merupakan bahasa yang digunakan untuk
pembuatan halaman web dilakukan dengan cara disisipkan (embedded
language) pada dokumen dengan memberi tanda tertentu yang disebut tag.
• Dokumen HTML secara umum akan terdiri dari dua bagian yaitu Header dan
Body.
• HTML menyediakan tag-tag untuk pendeskripsian dokumen dan format
dokumen yang lengkap.
• Pada halaman HTML dapat ditambahkan gambar, tabel, suara, atau file-file lain.

13.6. SOAL-SOAL LATIHAN


1. Apakah perbedaan antara web statis dan web dinamis?
2. Kunjungilah beberapa situs, kemudian cermatilah apakan halaman-halaman
web yang tersedia termasuk halaman web statis ataukah dinamis?
3. Bukalah sebuah situs tertentu kemudian dari menu bar web browser kalian,
pilih View kemudian pilih Source. Pada jendela yang muncul, cermatilah
kode-kode HTML yang muncul. Cari bagian mana yang merupakan kode-

Rekayasa Perangkat Lunak 393


kode untuk format dokumen, tabel, gambar, dan elemen-elemen HTML yang
lain.
4. Buatlah halaman HTML seperti berikut.

5. Buat lagi halaman web seperti berikut.

394 Disain Web Statis dan HTML


Gambar 14.1. Halaman pencarian Google
.
Bagi kalian yang sering berselancar di internet gambar seperti di atas hampir
pasti sering kalian jumpai. Gambar hasil pencarian dari Google di atas dapat
digolongkan dalam halaman-halaman web dinamis. Hal ini karena apa yang akan
ditampilkan berubah-ubah tergantung pada apa yang kita inputkan.
Bab ini membahas tiga standar kompetensi yaitu membuat halaman web
dinamis dasar, membuat halaman dinamis tingkat lanjut dan membuat program
aplikasi web berbasis JSP. Penggabungan tiga kompetensi ini karena kedekatan isi
kompetensi dasar. Penyusunan sub bab tidak mengacu langsung pada kompetensi
dasar, namun lebih mengacu pada urutan dan kedekatan pokok bahasan.
Rangkuman diletakkan pada akhir bab dilanjutkan dengan soal-soal latihan yang
disusun dari soal-soal yang mudah hingga soal-soal yang sulit. Latihan soal ini
digunakan untuk mengukur kemampuan terhadap kompetensi dasar ini. Sebelum
mempelajari kompetensi ini ingatlah kembali dasar sistem komputer, sistem operasi,
algoritma pemrograman dasar, pemrogaman Java, web statis dan HTML.

Rekayasa Perangkat Lunak 395


TUJUAN
Setelah mempelajari bab ini diharapkan kalian akan mampu :
o Mempersiapkan lingkungan teknis
o Membuat halaman dinamis
o Menambahkan fungsi-fungsi pada halaman dinamis
o Menguji halaman dinamis
o Memahami konsep pemrograman web
o Mempersiapkan pembuatan aplikasi
o Mengenal bahasa-bahasa skrip untuk pemrograman web
o Mengenali isu-isu keamanan web
o Menjelaskan kebutuhan perangkat lunak untuk aplikasi web
berbasis JSP
o Menjelaskan dasar-dasar JSP

14.1. DASAR WEB DINAMIS


Pengertian tentang web dinamis telah disinggung secara ringkas pada Bab 13.
Pada bab ini kita akan lebih dalam mempelajari web dinamis.

14.1.1. Kebutuhan Lingkungan Teknis


Ada perbedaan yang penting dalam kebutuhan lingkungan pengembangan
antara web statis dan web dinamis. Pada bab sebelumnya kalian telah mengetahui
bahwa ada beberapa kebutuhan perangkat untuk membuat halaman web statis,
antara lain perangkat komputer personal, sistem operasi, text editor atau perangkat
lunak pembuat halaman web, dan web browser. Beberapa kebutuhan tersebut dapat
digunakan untuk lingkungan web statis, namun beberapa perangkat tambahan juga
diperlukan.
• Perangkat keras
Pengembangan web dinamis membutuhkan perangkat keras yang lebih tinggi
spesifikasinya dibanding web statis. Umumnya pengembang akan melakukan
pembuatan web dinamis pada satu komputer yang berperan sekaligus sebagai
server dan client. Tapi, seringkali juga dibutuhkan lebih dari satu komputer,
dimana satu komputer berperan sebagai server dan yang lainnya sebagai client.
Pada komputer yang berperan sebagai server maka spesifikasi teknisnya harus
lebih tinggi dari komputer client. Kebutuhan prosesor yang lebih cepat dan
memori utama yang lebih besar merupakan kebutuhan mutlak.
• Perangkat lunak
Sistem operasi yang digunakan pada pengembangan web dinamis lebih
baik jika menggunakan versi yang mendukung. Biasanya pembuat sistem
operasi akan menyediakan versi yang memang khusus diperuntukkan bagi
server. Versi ini biasanya memiliki tingkat keamanan dan stabilitas yang lebih
tinggi dari versi desktop-nya. Sebagai contoh, pada Linux ada distro Ubuntu

396 Web Dinamis Berbasis JSP


versi server, SuSe menyediakan versi Enterprise Server, dan demikian juga
distro-distro lainnya. Sedangkan pada Windows tersedia Windows NT,
Windows Server 2000, Windows Server 2003 dan yang terbaru Windows Server
2008.
Kebutuhan perangkat lunak yang sangat membedakan antara web statis
dan web dinamis adalah bahasa pemrograman sisi server. Bahasa
pemrograman ini diinstall untuk digunakan web server menerjemahkan
perintah-perintah tertentu dalam bahasa tertentu. Sebagai contoh jika kita
hanya menginstall web server Apache saja, maka kita tidak dapat menjalankan
halaman web dinamis yang kita tulis dengan bahasa pemrograman PHP atau
JSP. Agar dapat menjalankan halaman web dinamis tersebut kita perlu
menginstall PHP atau Tomcat.
Perangkat pengembang web dinamis saat ini sudah banyak tersedia,
meskipun beberapa memiliki harga yang relative mahal. Beberapa diantaranya
adalah Microsoft Visual Studio, Borland Delphi Studio, Adobe Dreamweaver, dan
lain-lain. Perangkat lunak ini selain dapat sebagai HTML Editor juga
mendukung bahasa pemrograman server seperti ASP.Net, PHP, JSP, dan
ColdFusion. Perangkat lunak pengembang yang gratis juga tersedia, antara lain
NetBeans yang mendukung penuh JSP, Eclipse yang mendukung banyak
bahasa pemrograman, Komodo Editor, dan lain-lain. Meskipun gratis, tetapi
fasilitas yang disediakan tidak kalah dengan yang tidak gratis.
Perangkat lunak lain yang dibutuhkan adalah DBMS. Hal ini karena
biasanya web dinamis menggunakan basis data sebagai tempat penyimpanan
data. DBMS personal seperti Microsoft Access bukan pilihan yang baik untuk
web dinamis, karena factor keamanan dan kinerjanya yang tidak sesuai dengan
sifat-sifat web dinamis. Basis data berbasis SQL yang bersifat server seperti
MySQL, Oracle, Microsoft SQL Server, dan lain-lain merupakan pilihan yang
cocok untuk digunakan dalam web dinamis.

14.1.2. Pemrograman Web Dinamis


Pemrograman web merupakan usaha untuk membuat halaman web dengan
menggunakan bahasa pemrograman web (script). Pemrograman web (web
programming) dikenal juga dengan istilah pengembangan web (web development).
Istilah lain yang mungkin juga cukup terkenal adalah web design. Web design lebih
memfokuskan bagaimana merancang tampilan halaman-halaman web menjadi
menarik bila dilihat. Atau boleh dikatakan web design lebih pada aspek visualnya
sedangkan web programming lebih fokus pada aspek logika proses yang terjadi di
dalam halaman-halaman web. Seorang web programmer mungkin juga seorang web
designer, namun biasanya pekerjaan ini dipisahkan orangnya karena perbedaan fokus
penekanannya.
Untuk membuat interaksi yang baik, dibutuhkan beberapa model pemrograman
web. Model pemrograman yang umum digunakan adalah client-side dan server-side.
Client dan server dalam kasus ini menunjukkan dua tempat yang berbeda. Server

Rekayasa Perangkat Lunak 397


adalah komputer yang bertindak sebagai pihak yang melayani permintaan data atau
informasi. Sedangkan Client adalah komputer pengguna yang hendak mengakses
program ke server untuk meminta data atau informasi dengan menggunakan alamat
yang unik. Secara umum interaksi dan pertukaran data antara client dan server
dalam internet tampak pada gambar 14.2. Pada gambar tersebut, tampak bahwa
segala proses dilakukan di web-server (server-side) sedangkan client hanya
akan menerima hasil olahan dari web-server yaitu berupa halaman-halaman
dalam format HTML.

Gambar 14.2. Pertukaran data antara client dan server.

Biasanya perangkat komputer yang bertindak sebagai server akan berjalan


terus-menerus tanpa henti dan berperan sebagai tempat dimana file/program dari
aplikasi web ditempatkan. Secara umum, untuk dapat mengakses layanan ke server
dibutuhkan browser seperti Internet Explorer (IE), Opera, Mozilla dan Netscape.

398 Web Dinamis Berbasis JSP


14.1.3. Bahasa Skrip untuk Pemrograman Web
Seperti dijelaskan di atas ada dua model pemrograman web yaitu client-side
dan server-side. Bahasa pemrograman untuk membuat web dinamis juga terbagi
menjadi dua yaitu client-side script dan server-side script.
Bahasa pemrograman yang digunakan dalam membuat aplikasi pada sisi client
biasa disebut sebagai client-side script. Client-side script yang umum digunakan
adalah JavaScript dan VBScript. Keuntungan utama dari client-side script adalah
waktu prosesnya yang jauh lebih cepat dibanding server-side. Hal ini karena seluruh
permintaan pengguna akan diproses pada komputer pengguna sendiri. Namun
masalah terbesar dari aplikasi dengan client-side script adalah keamanan kode dan
data. Hal karena pengguna dapat dengan mudah membuka dan melihat kode
program.
Contoh penggunaan client-side script adalah :
- aplikasi web untuk kalkulator, tanggal atau permainan.
- pemeriksaan event pada browser, jika mouse diklik kanan maka akan muncul
keterangan yang dibutuhkan.
- validasi isi form yang diinputkan oleh pengguna, sebelum isi form tersebut dikirim
ke server.
Bahasa pemrograman yang digunakan dalam membuat aplikasi pada sisi server
biasa disebut sebagai server-side script.
Ada beberapa keuntungan pada penggunaan server-side script, yaitu :
- Keamanan kode
Script yang kita buat tidak akan dapat dibaca oleh user karena seluruhnya akan
disimpan dan dijalankan di web server. Yang akan dikirim ke client (pengguna)
adalah hasil pengolahan yang berupa dokumen dalam format HTML saja.
- Koneksi dengan basis data
Kemampuan koneksi dengan basis data merupakan keuntungan terbesar dari
server-side script. Dengan kemampuan ini informasi yang dihasilkan oleh web
server menjadi sangat dinamis bukan lagi halaman-halaman statis. Informasi
yang disampaikan ke user tergantung dari apa yang diinginkan oleh user tersebut.
- Dapat melakukan tracking (pelacakan) pengguna
Dengan server-side script, dapat diketahui siapakah user yang sedang akses ke
aplikasi web dengan menggunakan fasilitas session.
Saat ini ada tiga teknologi utama yang digunakan dalam server side script, yaitu
ASP (termasuk ASP.Net), PHP, dan JSP. JSP akan kita bahas pada bagian lain dari
bab ini.

Rekayasa Perangkat Lunak 399


• ASP
ASP sebenarnya bukan bahasa pemrograman karena ASP adalah mesin
(engine) untuk server side script yang ditanamkan pada IIS. Bahasa
pemrograman yang dipakai adalah VBScript. Namun orang lebih sering
menyebut ASP saja. Secara default ini adalah server side script pada web
server Microsoft Windows. Seperti halnya bahasa pemrograman web lainnya,
untuk menandai bahwa suatu kode dalam halaman web merupakan VBScript
maka digunakan tag sebagai penanda. Berikut ini suatu contoh VBScript:
<html>
<body>
<% Response.Write("Hello World!") %>
</body>
</html>
Atau sebagai berikut:
<html>
<body>
<%= "Hello World!" %>
</body>
</html>
Pada kode di atas bagian yang ditandai dengan <% dan %> merupakan bagian
yang memuat kode VBScript. VBScript merupakan bahasa yang sangat mirip
dengan Visual Basic. Namun telah disesuaikan dengan lingkungan web.
Dokumen berisi kode ini dapat disimpan dalam bentuk html atau dengan
ekstensi .asp. Namun yang paling penting adalah dokumen tersebut harus
diletakkan pada direktory yang dapat dibaca dan dieksekusi oleh web server
IIS.
ASP.Net merupakan versi lanjutan dari ASP, namun dengan teknologi yang
sangat berbeda. ASP.Net dibangun berdasarkan pada teknologi .Net yang
dikembangkan oleh Microsoft. Bahasa yang digunakan tidak lagi VBScript
namun telah menggunakan kemampuan penuh dari salah satu dari bahasa-
bahasa dalam kelompok .Net yaitu Visual Basic.NET, C#, Visual J. Dengan
teknologi .Net memungkinkan tag-tag HTML digantikan secara penuh oleh
script-script yang ditulis dengan bahasa-bahasa .Net.

• PHP
PHP adalah bahasa pemrograman yang didesain khusus untuk membuat
halaman web. PHP adalah singkatan dari PHP Hypertext Preprocessor.
Singkatan yang agak aneh. Awalnya, PHP adalah singkatan dari Personal Home
Page yang pertama kali diciptakan oleh Rasmus Lerdorf. PHP diciptakan
pertama kali untuk keperluan mencatat jumlah pengunjung homepagenya.
Perkembangan php saat ini dapat dilihat pada www.php.net.

400 Web Dinamis Berbasis JSP


PHP adalah salah satu bahasa server-side yang paling populer. Kepopulerannya
disebabkan kelebihan-kelebihannya dibanding bahasa sejenis, seperti Perl dan
CGI. PHP mampu menutupi kekurangan pada bahasa pemrograman web pada
umumnya. PHP mudah dibuat dan cepat dijalankan. PHP dapat berjalan dalam
web server yang berbeda, seperti Apache, PWS, IIS dan sebagainya. PHP juga
dapat berjalan dalam sistem operasi yang berbeda pula, seperti UNIX,
Windows, Mac OS X dan Linux. PHP diterbitkan secara gratis. Source code PHP
dapat di-download tanpa perlu megeluarkan uang. PHP juga termasuk bahasa
yang embedded (bisa diletakkan di dalam tag HTML).

14.1.4. Persiapan Membuat Halaman Web Dinamis


Persiapan yang perlu dilakukan sebelum membuat halaman web dinamis antara
lain adalah:
• Memeriksa apakah web server sudah terinstal dengan benar dan berjalan
sebagaimana mestinya.
Pada system operasi windows, kita dapat memeriksa apakah web server
berjalan atau tidak melalui jendela Service. Buka Control Panel, kemudian klik
ganda pada ikon Administrative Tools. Pilih ikon Service dan klik ganda pada
ikon tersebut sampai terbuka jendela seperti pada Gambar 14.3.

Gambar 14.3. Jendela Services.

Pada jendela Services tersebut cari nama servis web server kalian. Jika kalian
menggunakan IIS cari nama Internet Information Services pada kolom nama.
Jika kalian memakai Apache, cari juga nama Apache. Jika belum ada mungkin

Rekayasa Perangkat Lunak 401


belum terinstal atau belum didaftarkan sebagai servis. Jika sudah ada maka
periksalah apakah sudah dijalankan apa belum dengan cara memeriksa kolom
status apakah sudah started atau belum. Jika belum, klik start untuk
menjalankan servis tersebut. Setelah itu ujilah dengan menjalankan web
browser kalian. Ketikkan pada bagian alamat : http://localhost/ kemudian
tekan enter. Pada beberapa konfigurasi web server, pemanggilan alamat
mungkin harus menyertakan nomor port seperti http://localhost:8080/. Jika
kalian mendapati halaman muka web server kalian tampil (lihat Gambar 14.4)
berarti web server telah dapat berjalan. Tetapi jika tidak muncul atau terjadi
pesan kesalahan berarti web server belum dapat berjalan dengan baik.

Gambar 14.4. Opera sedang memanggil alamat server.

• Memeriksa apakah bahasa pemrograman server yang akan digunakan sudah


terinstall dan dapat dipanggil oleh web server.
Pemeriksaan dapat dilakukan dengan cara memeriksa daftar perangkat lunak
yang sudah diinstal di dalam sistem. Pada Windows dapat dilakukan dengan
cara membuka jendela Add and Remove Programs seperti pada Gambar 14.5.
Jika perangkat lunak bahasa pemrograman kalian sudah terinstal maka akan
terdaftar pada jendela ini.

402 Web Dinamis Berbasis JSP


Gambar 14.5. Daftar perangkat lunak yang terinstal pada Windows.

• Mempersiapkan lokasi penyimpanan file-file kode program.


File-file yang berisi kode-kode server-side script harus diletakkan dalam
direktori yang bisa dibaca oleh web server. Sebagai contoh pada beberapa
distribusi Linux file-file PHP disimpan pada direktori /usr/var/www/ dibeberapa
distribusi yang lain disimpan di direktori /svr/www/. Pada Microsoft Windows
demikian juga. Lokasi ini dapat diubah dengan cara mengedit file konfigurasi
Apache Web Server (httpd.conf). Contoh lokasi penyimpanan file-file PHP
dapat dilihat pada Gambar 14.6.

Rekayasa Perangkat Lunak 403


Gambar 14.6. Lokasi direktori yang bisa dibaca web server.

14.1.5. Pembuatan dan Pengujian Halaman Web Dinamis


Pada bagian ini kita akan mencoba membuat halaman dinamis sederhana
dengan bahasa PHP pada web server Apache.
Buka teks editor kalian (bisa menggunakan Notepad) kemudian ketikkan kode
berikut ini.
<?php
echo “Hallo, ini PHP. Salam kenal ya..!!!”;
?>
Simpan file dengan nama 21_1.php dan simpan di direktori yang bisa diakses
web server Apache (pada kasus ini disimpan di direktori c:\appserv\www\scripts\).
Bukalah web browser kalian kemudian ketikkan di halaman alamat:
http://localhost:8080/scripts/21_2.php. Localhost adalah nama server-nya dan 8080
adalah port dimana Apache dijalankan. Perhatikan bagaimana menuliskan alamat ini
dan bandingkan dengan lokasi asli dari file tersebut. Jika semuanya lancar maka
kalian akan mendapati tampilan seperti pada Gambar 14.7.
Halaman web dinamis harus dipanggil dengan cara tersebut. Karena memang
hanya bisa dijalankan oleh web server. Kalau dengan file halaman web statis, kalian
bisa langsung klik ganda pada file tersebut dan web browser akan menampilkan
hasilnya. Tetapi dengan halaman web dinamis tidak bisa dengan cara tersebut.

404 Web Dinamis Berbasis JSP


Cobalah klik ganda pada halama web dinamis yang telah kalian buat di atas.
Bagaimanakah outputnya?

Gambar 14.7. Pengujian halaman web dinamis.

14.2. SEKILAS TENTANG JSP


Seperti telah dijelaskan di atas, Java Server Pages (JSP) adalah bahasa scripting
untuk web programming yang bersifat server side seperti halnya PHP dan ASP. JSP
dapat berupa gabungan antara baris HTML dan fungsi-fungsi dari JSP itu sendiri.
JSP adalah suatu teknologi web berbasis bahasa pemrograman Java dan
berjalan di Platform Java, serta merupakan bagian teknologi J2EE (Java 2 Enterprise
Edition). Teknologi JSP menyediakan cara yang lebih mudah dan cepat untuk
membuat halaman-halaman web yang menampilkan isi secara dinamik. Teknologi
JSP didesain untuk mempermudah dan mempercepat pembuatan aplikasi berbasis
web yang bekerja dengan berbagai macam web server, application server, browser
dan development tool.

Rekayasa Perangkat Lunak 405


14.2.1. Java dan JSP
Ada tiga cara untuk menggunakan teknologi Java dalam lingkungan web, yaitu
applet, servlet dan JSP. Applet merupakan program Java yang disisipkan pada
halaman HTML dengan menggunakan tag <APPLET>. Kita dapat membuat sebuah
program yang kompleks dengan menggunakan bahasa Java kemudian jika ingin
ditampilkan dalam halaman web, kita menyimpan program tersebut dalam bentuk
applet dan menyisipkannya pada halaman-halaman HTML. Applet ini akan dieksekusi
oleh Java Virtual Machine (JVM) pada browser. Sayangnya seringkali komputer client
tidak didukung oleh JVM, sehingga applet tersebut tidak dapat dijalankan.
Servlet adalah program yang ditulis dengan bahasa Java yang dijalankan pada
server yang terkoneksi web. Pada servlet, komputer client tidak membutuhkan JVM,
karena semua kode program akan dieksekusi di sisi server. Output yang akan
disampaikan kepada browser client adalah murni HTML. Servlet ini akan dikompilasi
dalam bentuk class. Servlet secara umum mampu meningkatkan sisi interaktif dan
dinamis halaman web. Kelemahan dari servlet adalah teks-teks HTML yang berisi
tampilan halaman harus dibuat dengan menggunakan bahasa pemrograman Java.
Hal ini menyulitkan jika kita ingin mengubah tampilan bagian HTML-nya, karena
berarti kita harus membuka kembali kode program java di servlet.
JSP merupakan solusi dari servlet. Kita tidak perlu mengkodekan teks-teks
HTML pada program, tapi cukup menyisipkan kode JSP pada teks HTML. Artinya
bagian static yang berupa tag-tag HTML akan terpisah dari kode JSP. Kita dapat
membuat halaman web static dengan HTML / Web editor, kemudian kita sisipi dengan
kode JSP untuk membuat halaman menjadi web dinamis.

14.2.2. Mekanisme Kerja Aplikasi Web Berbasis JSP


Secara umum aplikasi web berbasis JSP akan mengikuti mekanisme seperti
Gambar 14.8. Halaman-halaman web yang mengandung kode JSP akan dikirim ke
web server. Kemudian web server akan memanggil perangkat lunak penerjemah JSP.
Oleh penerjemah ini kode JSP akan dirubah menjadi file sumber berekstensi .Java.
file ini akan dikompilasi untuk menghasilkan class. Hasil dari kompilasi ini akan
dijalankan kemudian hasilnya akan disampaikan kepada web server untuk diteruskan
pada browser client.

Gambar 14.8. Mekanisme kerja aplikasi web dengan JSP.

406 Web Dinamis Berbasis JSP


Sekilas proses di atas terlihat bertele-tele. Pada awalnya, memang untuk
menampilkan halaman yang mengandung JSP terasa lambat karena proses kompilasi
harus dilakukan. Tetapi ketika memanggil untuk yang kedua kali maka proses
penampilan halaman akan sangat cepat. Hal ini karena proses kompilasi tidak perlu
dilakukan lagi.

14.2.3. Kebutuhan Perangkat Lunak dan Konfigurasi


Untuk membangun aplikasi web berbasis JSP, diperlukan perangkat lunak yang
hampir sama dengan web dinamis lainnya. Namun ada kekhususan dibanding dengan
ASP atau PHP. Hal ini karena perbedaan mekanisme proses antara JSP dengan ASP
atau PHP. Selain perangkat lunak yang telah disebutkan di bagian awal berikut ini
adalah kebutuhan perangkat lunak tambahan untuk JSP.
• Java Development Kit (JDK). Karena JSP berdasarkan bahasa Java, maka JDK
harus terinstal di dalam komputer. JDK telah dibahas secara singkat pada bab
8.
• Tomcat. Tomcat adalah servlet container dan implementasi JSP. Dibutuhkan
untuk mensimulasi komputer personal menjadi web server. Tomcat biasanya
diinstalkan di atas web server Apache, sehingga orang sering menyebut sebagai
Apache Tomcat. Perangkat lunak ini dapat didownload gratis di situs
http://jakarta.apache.org.
• Aplikasi pengembang terpadu (IDE) seperti NetBeans atau Eclipse. Meskipun
membuat halaman JSP bisa dengan menggunakan teks editor biasa namun
disarankan untuk menggunakan aplikasi seperti NetBeans untuk mempermudah
pembuatan halaman web. Bahkan pada versi 6.1. (dapat didownload di
http://www.netbeans.org) selain mendapatkan IDE kita juga mendapatkan web
server dan servlet container (Apache Tomcat) terpadu (Gambar 14.9). Kita
juga bisa menggunakan aplikasi server yang sangat kuat yaitu SUN Java
Application Server (Gambar 14.10) yang juga terintegrasi pada paket penuh
NetBeans. Pada buku ini kita akan banyak menggunakan fasilitas dari
NetBeans baik untuk konfigurasi maupun untuk membuat halaman-halaman
JSP.

Rekayasa Perangkat Lunak 407


Gambar 14.9. NetBeans 6.1 dengan Apache Tomcat terintegrasi.

Gambar 14.10. Admin Console Java Application Server.

408 Web Dinamis Berbasis JSP


Setelah semua terinstal dengan benar, maka langkah yang kedua adalah
konfigurasi, terutama lokasi penyimpanan file. Buka NetBeans, kemudian setelah
terbuka pilih menu Tools kemudian pilih Options. Pada jendela Options (Gambar
14.11), pilih tab Miscellaneous. Klik Add Directory untuk untuk membuka jendela Add
Local Directory. Pilih lokasi kemudian tekan OK. Pada klik Ok pada jendela Options
untuk keluar.

Gambar 14.11. Penentuan lokasi penyimpanan file.

Untuk menguji apakah halaman JSP dapat dijalankan, pada halaman awal
NetBeans, klik menu File dan pilih New Project. Jendela New Project seperti Gambar
14.12. akan terbuka. Pada bagian Choose Project pilih kategori Web dan pada
Projects pilih Web Application. Klik Next untuk melanjutkan pada menentukan nama
dan lokasi penyimpanan project (Gambar 14.13). klik Next untuk melanjutkan
menentukan tipe dan setting server (Gambar 14.14). Pada bagian ini kita dapat
memilih apakah menggunakan Apache Tomcat atau GlassFish (Java Application
Server). Klik Finish untuk menyelesaikan konfigurasi aplikasi web.

Rekayasa Perangkat Lunak 409


Gambar 14.12. Penetuan tipe project.

Gambar 14.13. Penentuan nama dan lokasi project.

410 Web Dinamis Berbasis JSP


Gambar 14.14. Tipe dan pengaturan server.

Setelah kalian menekan Finish kalian akan dihadapkan pada tampilan seperti
pada Gambar 14.15.

Gambar 14.15. Lingkungan kerja NetBeans.

Rekayasa Perangkat Lunak 411


Perhatikan pada jendela Project klik
Files kemudian cermati struktur direktori
pada direktori JSP-01 (Gambar 14.16).
Struktur direktori aplikasi JSP harus
mengikuti aturan yang ketat. Di bawah
direktori JSP-01 terdapat direktori dengan
penting yaitu web. direktori ini tempat kita
menyimpan file dengan ekstensi .jsp. Di
bawah direktori web terdapat direktori WEB-
INF. Direktori ini harus ditulis namanya
seperti ini, jika tidak maka aplikasi tidak
akan jalan. Direktori ini berisi file-file
Gambar 14.16. Struktur direktori konfigurasi yang penting bagi jalannya
aplikasi JSP aplikasi web dengan JSP.
Coba kalian jalankan halaman JSP
yang telah otomatis dibuatkan oleh NetBeans dengan cara pilih menu Run, kemudian
pilih Run Main Project. Kode program yang dibuatkan otomatis oleh NetBeans ini
seperti berikut:
<%--
Document : index
Created on : Jun 21, 2008, 9:42:26 AM
Author : Aunur R. Mulyarto
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h2>Hello World!</h2>
</body>
</html>

Jika web browser kalian telah berhasil menampilkan halaman seperti pada
Gambar 14.17, berarti kalian telah siap untuk membuat aplikasi dengan JSP.
Perhatikan pada alamat URL-nya, halaman ini dipanggil dengan alamat
http://localhost:8080/JSP-01/. Karena file yang kita panggil adalah file index.jsp,
maka kita dibolehkan memanggil halaman tersebut tanpa menyebut nama file.
Konfigurasi pada server telah membuat server mengenali bahwa halaman dengan
nama index adalah halaman awal.

412 Web Dinamis Berbasis JSP


Gambar 14.17. Hasil eksekusi halaman web JSP.

14.3. DASAR-DASAR JSP


JSP menyediakan empat kategori tag, yaitu directive, elemen scripting,
komentar, dan action. Pada bagian ini kita tidak akan mempelajari tentang deklarasi
variabel, struktur kontrol program, class dan method. Hal ini karena JSP didasarkan
pada java, sehingga bagian-bagian tersebut sama dengan apa yang kalian pelajari
pada bab tentang pemrograman Java (Bab 8).

14.3.1. Directive
Directive adalah sekumpulan tag yang menentukan bagaimana dokumen yang
berisi direktif ini akan diproses. Directive digunakan JSP untuk mengirimkan “pesan”
ke JSP container. Directive berguna untuk melakukan setting nilai global seperti
deklarasi class atau method. Setting yang dilakukan oleh directive berlaku pada
seluruh halaman (hanya halaman itu saja).
Secara umum sintaks directive adalah sebagai berikut :
<%@ nama_directive atribut1=”nilai1” atribut2=”nilai2” . . %>
Directive pada JSP terdiri atas tiga jenis tentu saja dengan fungsi yang
berbeda-beda.
• Page : digunakan untuk mendefinisikan atribut-atribut yang terdapat pada
halaman JSP. Atribut-atribut ini misalnya atribut language, import, info,
errorpage dan lain-lain. Cara penulisannya dengan menggunakan tanda @
setelah tag JSP (<%) diikuti kata page dan atributnya.
Contoh : <%@ page language=”java” %>

Rekayasa Perangkat Lunak 413


• Include : digunakan untuk menyisipkan suatu berkas atau mengimpor suatu
kelas. Cara penulisannya dengan menggunakan tanda @ setelah tag JSP (<%)
diikuti kata include dan atributnya.
Contoh : <%@ include file="/header.html" %>
• Taglib : digunakan untuk mendefinisikan tag-tag yang dibuat sendiri oleh
pemrogram. Cara penulisannya dengan menggunakan tanda @ setelah tag JSP
(<%) diikuti kata taglib dan atributnya.
Contoh: <%@ taglib uri =
"http://jakarta.apache.org/taglibs/application-1.0"
prefix="app" %>

14.3.2. Elemen Scripting


Elemen scripting digunakan untuk menggabungkan instruksi-instruksi
pemrograman Java ke dalam halaman web. Instruksi tersebut akan dieksekusi setiap
kali halaman diproses sebagai permintaan. Ada tiga jenis scripting yaitu deklarasi,
scriplet dan ekspresi.
• Deklarasi
JSP menyediakan tag yang secara khusus ditujukan untuk melakukan
pendeklarasian variable yang berlevel halaman. Variabel seperti ini akan
dikenali di sepanjang halaman. Tag yang dimaksud dinamakan tag deklarasi.
Tag ini berbentuk sebagai berikut :
<%!.....%>
Contoh 14.1. Penggunaan tag deklarasi.
Ketikkan kode berikut dan simpan dengan nama contoh14-1.jsp.
<html>
<head>
<title>Tag Deklarasi</title>
</head>
<body>
<%!
String baju;
int harga = 60000;
%>

Setelah Deklarasi : <br>


<%
baju = "John Mc Roe";
out.println("Merek baju : " + baju + "<BR>");
out.println("Harga baju : " + harga + "<BR>");
%>
</body>
</html>

414 Web Dinamis Berbasis JSP


Jalankan program tersebut maka tampilan hasil akan tampak seperti pada
Gambar 14.18. Pada contoh kode ini tag deklarasi digunakan untuk
mendeklarasikan dua variabel yaitu baju dengan tipe data string dan harga
dengan tipe data int. Perhatikan juga cara mengisi, memanggil dan
menampilkan kembali isi dari variabel dengan pernyataan out.println.

Gambar 14.18. Hasil eksekusi penggunaan tag deklarasi.

• Scriplet
Scriplet merupakan sekumpulan kode program Java uang dijalankan setiap kali
halaman JSP dipanggil. Pada bagian ini kalian bisa memasukkan kode-kode
program Java yang telah kalian pelajari pada Bab 8. Cara penulisannya adalah
dengan memberikan tag <% kode %>.
Contoh 14.2. Penggunaan tag scriplet.
<html>
<head>
<title>Contoh Println</title>
</head>
<body>
<%
out.print("Ini keluar dari tag scriplet");
out.print("Coba saja kalau tidak percaya”);
%>
</body>
</html>
Simpan file dengan nama yang diakhiri .jsp. Jalankan kode progam tersebut
dan periksalah hasilnya.

• Ekspresi
Ekspresi adalah satu baris perintah yang digunakan untuk mengeksekusi
perintah sekaligus menampilkan dalam halaman web. Eskpresi ini mirip seperti

Rekayasa Perangkat Lunak 415


ketika kita memanggil fungsi/method pada Java. Cara penulisannya adalah
dengan menggunakan tag <%= kode %>
Contoh 14.3. Penggunaan tag ekspresi.
Ketikkan kode di bawah ini kemudian simpan sebagai file jsp.
<%! //Deklarasi variabel
int jmlUser=3;
//Deklarasi method
public String Hello(String nama) {
return "Hallo " + nama;
}
%>
<HTML>
<HEAD>
<TITLE>Contoh tag ekspresi JSP</TITLE>
</HEAD>
<BODY>
<H3>
<% for (int i=1; i<=jmlUser; i++) {
//Contoh scriplets
%>
<i><%=Hello("User "+ i + "!")%> </i> <br>
<%}%>
</H3>
</BODY>
</HTML>
Jalankan kode program di atas. Tampilan output akan tampak seperti pada
Gambar 14.19.

Gambar 14.19. Hasil eksekusi tag ekspresi.

416 Web Dinamis Berbasis JSP


14.3.3. Komentar
Komentar digunakan untuk memberikan keterangan pada kode-kode JSP. Ada
tiga jenis komentar yang dapat disisipkan dalam halaman JSP, yaitu komentar
content, komentar JSP dan komentar bahasa script.
Komentar content ditulis dengan tag <!-- komentar -->. Komentar model ini
tidak menampilkan output ke browser. Tapi tertulis pada source HTML.
Komentar JSP merupakan tipe komentar yang hanya tampak pada kode
program JSP. Ketika kode JSP dikompilasi, komentar tersebut akan dilewati dan tidak
ikut dikompilasi. Komentar ini dituliskan dengan cara <%-- komentar -->.
Komentar bahasa script sama dengan yang digunakan pada Java (lihat kembali
bab 8). Komentar ini disisipkan pada scriplet. Pada contoh 14.3 kita telah
menggunakan salah satu cara komentar bahasa script. Perhatikan pada baris yang
diawali dengan tanda //. Cara yang lain adalah dengan tanda /* komentar */.

14.3.4. Action
Action mendukung beberapa aksi yang berbeda-beda. Hampir mirip dengan
scripting, action akan dieksekusi setiap kali ada permintaan. Fungsi penting dari
action adalah memungkinkan terjadinya transfer kontrol antar halaman, mendukung
penggunaan applet Java dan memungkinkan JSP terintegrasi dengan komponen
JavaBeans.
JSP mengenal tag action standar dan custom tag. Tag standar adalah tag yang
didefinisikan dalam spesifikasi JSP, sedangkan custom tag adalah tag baru yang dapat
didefinisikan sendiri. Pada bagian ini hanya dibahas mengenai tag action standar. Tag
action standar JSP adalah sebagai berikut :
• <jsp:useBean>
• <jsp:setProperty>
• <jsp:getProperty>
• <jsp:param>
• <jsp:include>
• <jsp:forward>
• <jsp:plugin>
Pada buku ini kita akan mempelajari penggunaan action standard forward dan
param. Forward action ini digunakan untuk mentransfer kontrol dari sebuah halaman
JSP ke halaman lain pada server lokal. Saat proses berlangsung, baris-baris kode
sesudah forward action pada JSP asal tidak akan diproses lagi oleh JSP container.
Proses berpindah pada halaman tujuan. Cara penulisannya adalah dengan
menggunakan tag <jsp:forward page=”localURL” />. Forward action
biasanya digunakan bersama-saman dengan Param action. Perhatikan contoh berikut.

Rekayasa Perangkat Lunak 417


Contoh 14.4. Penggunaan forward action untuk operasi login.
Buat tiga file masing-masing bernama login.html, testlogin.jsp, dan validlogin.jsp. Isi
dari masing-masing file adalah sebagai berikut.
File login.html
<html>
<head>
<title>Login </title>
</head>
<body>
<FORM ACTION="testlogin.jsp" METHOD="post">
Silakan masukkan nama dan password anda : <BR>
Nama :<INPUT TYPE="text" NAME="nama"> <BR>
Password :<INPUT TYPE="text" NAME="pass"> <BR>
<INPUT TYPE="SUBMIT" VALUE="Login">

</FORM>
</body>
</html>
File testlogin.jsp
<html>
<head>
<title>Test Login </title>
</head>
<body>
<%
String nama = request.getParameter("nama");
String pass = request.getParameter("pass");

if ((nama.equals("aunurrm")) && (pass.equals("arm"))) {


%>
<jsp:forward page='validlogin.jsp' >
<jsp:param name='id' value='<%= nama %>' />
</jsp:forward>
<% }
else {
%>
<jsp:forward page='login.html' />
<% }
%>
</body>
</html>
File validlogin.jsp
<html>
<head>
<title>Login OK</title>
</head>
418 Web Dinamis Berbasis JSP
<body>
<H3>
Selamat <%=request.getParameter(“id”) %> <BR>
Anda berhasil login<BR>
</H3>
</body>
</html>
Jalankan halaman login.html maka kalian akan mendapatkan tampilan seperti pada
Gambar 14.20. Isikan sembarang nama dan password kemudian tekan tombol Login.
Kalian tidak akan mendapatkan hasil apa-apa. Nama dan password anda akan hilang.
Demikian berulang-ulang. Sekarang masukkan pada nama ‘aunurrm’ dan
passwordnya ‘arm’ (tanpa tanda petik). Tekan tombol Login, maka kalian akan
mendapatkan hasil seperti pada Gambar 14.21.

Gambar 14.20. Hasil eksekusi halaman login.html

Gambar 14.21. Hasil eksekusi jika nama dan password benar.

Rekayasa Perangkat Lunak 419


Pada contoh di atas file login.html merupakan file untuk menerima input nama
dan password. Pada file ini kita menggunakan fitur form pada HTML. Formulir
dibentuk dengan menggunakan pasangan tag <FORM> dan </FORM>. Dua atribut
utama dari FORM yang sering digunakan adalah ACTION dan METHOD.
• ACTION menentukan alamat yang akan dijalankan dan menerima semua
masukan pada FORM. Jika ACTION tidak disebutkan, informasi akan dikirim ke
alamat yang sama dengan halaman FORM itu sendiri.
• METHOD digunakan untuk menentukan bagaimana informasi dikirim ke alamat
yang disebutkan dalam ACTION. Nilai yang umum digunakan adalah GET dan
POST. POST membuat informasi akan dikirim secara terpisah dengan alamat,
sedangkan GET akan membuat informasi dikirim menjadi satu dengan alamat
yang dituju.
Contoh di atas menggunakan action=”testlogin.jsp” dan metode penyampaiannya
adalah post. Artinya data pada form akan dikirim ke file dengan nama testlogin.jsp
yang berada satu direktori dengan file login.html.
File kedua yang testlogin.jsp adalah file yang digunakan untuk menangkap input
kemudian memeriksa apakah input tersebut valid atau tidak. Perintah
request.getParameter digunakan untuk menerima input sesuai dengan variabel input
yang ditetapkan. Sebagai contoh request.getParameter(‘nama’) berarti akan
menangkap isi dari variabel nama dari file login.html. Isi dari nama dan pass ini
kemudian di masukkan pada variabel string dengan nama yang sama. Kemudian
dicocokkan apakah nama = ‘aunurrm’ dan pass=’arm’. Jika benar maka action
forward dilakukan yaitu membawa isi yang didefinisikan di action param yaitu variabel
‘id’ ke file loginvalid.jsp. Jika tidak maka action forward juga dilakukan tetapi kembali
ke file login.html.
File ketiga hanya dipanggil jika syarat nama dan pass dipenuhi. File ini juga
menggunakan request.getParameter untuk menangkap variabel ‘id’.

14.4. Keamanan dalam Web Dinamis


Web termasuk layanan internet yang paling rentan terhadap ancaman dan
pelanggaran. Ada beberapa cara yang bisa dilakukan oleh pihak yang tidak
bertanggung jawab terhadap suatu situs, antara lain:
• Pemanfaatan bug sistem. Para penyerang menggunakan bug (kesalahan) yang
dikandung oleh sistem operasi, web server, bahasa pemrograman web, atau
kode-kode lain yang terinstal di komputer server. Jika ini berhasil ditembus,
maka penyerang dapat mengambil alih sistem secara keseluruhan.
• Pemanfaatan bug pada aplikasi client. Kadang-kadang kita tidak terlalu
memperhatikan bug pada aplikasi client, misalnya adanya fitur berbahaya pada
web browser yang dapat dijadikan batu loncatan oleh para penyerang.

420 Web Dinamis Berbasis JSP


• Pengaksesan tidak sah. Cara ini dilakukan dengan mendapatkan hak akses
(user name dan password) secara tidak sah. Dengan menggunakan perangkat
lunak tertentu, seperti password cracker, penyerang berusaha mengintip apa
yang dilakukan pengguna saat login pada aplikasi web. Setelah memperoleh
hak akses tersebut, mereka menggunakan untuk mengakses dan mengganggu
system secara tidak sah.
• Penyadapan transmisi informasi (eavesdropping). Informasi di internet seperti
mobil yang berlalu lalang di jalan-jalan. Teknik ini termasuk tingkat tinggi.
Dilakukan dengan cara mencegat dan menyadap informasi yang ditransmisikan
antara web server dan web browser. Biasanya yang dituju adalah data-data
rahasia seperti password, nomor account, nomor kartu kredit, dan rekaman
transaksi online.
• Penyerangan dengan Denial of Service (DOS). Bentuk penyerangan ini lebih
mengarah pada lingkungan jaringan bukan pada system. Serangan ini
ditujukan untuk melumpuhkan suatu system dengan cara membanjiri jaringan
dengan trafik yang sangat tinggi dan terus menerus melebihi kapasitas yang
didukung. Hal ini mengakibatkan system jaringan berhenti bekerja dan tidak
dapat melayani permintaan pengguna.

Gambar 14.22. Penyerangan dengan DOS.

Secara umum tidak ada perangkat lunak yang seratus persen menjamin bebas
dari gangguan keamanan. Hal ini karena celah-celah keamanan selalu muncul di sana
sini yang memungkinkan penyerangan. Namun ada beberapa langkah yang dapat
digunakan untuk mengurangi resiko terserang gangguan, antara lain:
• Menjalankan server secara aman, misalnya dengan tidak memberikan
kesempatan pada pengguna untuk mengakses melalu shell, membuat fasilitas
perekam kesalahan (log) dari web server.
• Menerapkan permissions atau hak akses pada direktori dan file secara ketat
(buka Bab 4 untuk mempelajari lagi permissions). Permissions ini juga harus
diterapkan pada file-file konfigurasi web server.

Rekayasa Perangkat Lunak 421


• Menuliskan program aplikasi web secara aman. Sering kali kesalahan yang
tidak disengaja pada pembuatan aplikasi web menjadikan aplikasi menjadi tidak
aman. Ada baiknya aplikasi diperiksa dan diuji berulangkali untuk memastikan
celah keamanannya sangat minimal.
• Mencegah dan memproteksi informasi dengan cara melakukan enkripsi
(penyandian) agar tidak dapat dibaca oleh penyadap.
• Mengontrol akses ke web server. Cara ini dilakukan untuk melindungi data-
data internal yang tidak bisa diakses dari luar. Beberapa cara dapat dilakukan
seperti membatasi akses berdasarkan alamat IP atau domain, membatasi
pengguna berdasarkan kategori tertentu, dan lain-lain.

Gambar 14.23. Membatasi akses untuk IP address tertentu.

14.5. RINGKASAN
• Pemrograman web merupakan usaha untuk membuat halaman web dengan
menggunakan bahasa pemrograman web (script).
• Ada dua model pemrograman web yaitu client-side dan server-side. Bahasa
pemrograman untuk membuat web dinamis juga terbagi menjadi dua yaitu
client-side script dan server-side script.
• Untuk membangun aplikasi web dinamis, diperlukan persiapan pada web
server, bahasa pemrograman web, lokasi penyimpanan web dinamis, dan
konfigurasi dari aplikasi.
• Java Server Pages (JSP) adalah bahasa scripting untuk web programming
yang bersifat server side dan berjalan di Platform Java.
• JSP menyediakan empat kategori tag, yaitu directive, elemen scripting,
komentar, dan action.
• Web termasuk layanan internet yang paling rentan terhadap ancaman dan
pelanggaran oleh karena itu upaya pencegahan dan pengamanan web adalah
sangat penting.

422 Web Dinamis Berbasis JSP


14.6. SOAL-SOAL LATIHAN
1. Sebutkan kebutuhan perangkat keras dan lunak untuk pembuatan web
dinamis.
2. Apakah perbedaan client-side script dan server side script?
3. Cobalah berselancar ke internet. Kemudian pada beberapa situs yang kalian
kunjungi, cermati pada halaman URL nya (lihat pada bagian Address Bar pada
web browser). Bisakah kalian menentukan teknologi pemrograman web apa
yang digunakan.
4. Buatlah aplikasi sederhana dengan menggunakan JSP untuk menghitung gaji
karyawan. Buat dua halaman, yang pertama adalah halaman untuk
memasukkan input, yaitu nama bulan, nama karyawan, jumlah jam kerja
pada bulan tersebut dan upah per jam. Sedang halaman yang kedua adalah,
untuk menghitung upah karyawan (jam kerja sebulan x upah per jam)
sekaligus menampilkan nama dan total gaji yang diperoleh pada bulan
tersebut.
5. Kembangkan soal No 4, dengan cara menambahkan halaman login sebelum
masuk halaman memasukkan input. Jika seseorang berhasil login, maka
halaman memasukkan input akan tampil, tetapi jika tidak maka akan menuju
ke halaman baru, yaitu untuk halaman mendaftar sebagai user.

Rekayasa Perangkat Lunak 423


424 Web Dinamis Berbasis JSP
Anonymous. 2004. Guide to the Software Engineering Body of Knowledge
(SWEBOK). The Institute of Electrical and Electronics Engineers, Inc.

Balter, A. 2006. Sams Teach Yourself Microsoft® SQL Server™ 2005 Express in 24
Hours. Sams.

Bass, L., P. Clements, and R. Kazman. 2003. Software Architecture in Practice. 2nd
Edition. Addison-Wesley.

Cormen, T.H. 2001. Introduction to Algorithm: Second Edition. The MIT Press.

Deek, FP., J.A.M. McHugh, and O.M. Eljabiri. 2005. Strategic software engineering :
An Interdisciplinary Approach. Auerbach Publications.

den Haan, P., L. Lavandowska, S.N. Panduranga, and K. Perrumal. 2004. Beginning
JSP 2: From Novice to Professional. Apress.

Dobson, R. 1999. Programming Microsoft Access 2000: The Developer’s Guide to


Harnessing the Power of Access. Microsoft Press.

Felleisen, M, R.B. Findler, M. Flatt, and S. Krishnamurthi. 2001. How to Design


Programs; An Introduction to Computing and Programming. The MIT Press.

Kak, A.C. 2003. Programming With Objects: A Comparative Presentation of Object


Oriented Programming with C++ and Java. John Wiley & Sons, Inc.

Kaisler, S.H. 2005. Software Paradigm. John Wiley & Sons, Inc.

Kennedy, B. and C. Musciano. 2006. HTML & XHTML: The Definitive Guide, 6th
Edition. O'Reilly.

Lafore, R. 1998. Data Structures & Algorithm in Java. Waite Group Press.

Laurie, B and P. Laurie. 2001. Apache: The Definition Guide. 2nd Edition. O’Reilly
and Associates, Inc.

Leffingwell, D. and D. Widrig. 2003. Managing Software Requirements: A Use Case


Approach. 2nd Edition. Addison-Wesley.

Lischner, R. 2000. Delphi in a Nutshell. O’Reilly and Associates, Inc.

Rekayasa Perangkat Lunak 425


Luckey, T. and J. Phillips. 2006. Software Project Management for Dummies. Wiley
Publishing, Inc.

McConnel, S. 2003. Professional Software Development: Shorter Schedules, Higher


Quality Products, More Successful Projects, Enhanced Careers. Addison-
Wesley.

Meyer, B. 2000. Object Oriented Software Construction. 2nd Edition. ISE, Inc.

Musciano, C. and B. Kennedy. 2002. HTML and XHTML: The Definition Guide. 4th
Edition. O’Reilly and Associates, Inc.

Navarro, A. 2001. Effective Web Design. 2nd Edition. SYBEX, Inc.

Powell, G. 2006. Beginning Database Design. Wiley Publishing, Inc.

Riordan, R.M. 2005. Designing Effective Database Systems. Addison Wesley


Professional.

Robbins, J. N. 2006. Web Design in a Nutshell, 3rd Edition. O'Reilly.

Suehring, S. 2002. MySQL Bible. Wiley Publishing, Inc.

Taylor, D.A. 1998. Object Technology: A Manager’s Guide. Addison-Wesley.

Van Roy, P and S. Haridi. 2004. Concepts, Techniques, and Models of Computer
Programming. The MIT Press.

426 Daftar Pustaka


Abstraction Command Line Interface (CLI)
Merupakan prinsip penyederhanaan Antar muka pengguna dengan model
dari sesuatu yang kompleks dengan perintah-perintah teks
cara memodelkan kelas sesuai dengan
masalahnya Compiler
Penerjemah bahasa pemrograman
Algoritma tingkat tinggi ke bahasa mesin dengan
Urutan langkah-langkah logis cara sekaligus seluruh kode program.
penyelesaian masalah yang disusun Prosesnya disebut kompilasi.
secara sistematis
Component Object Model (COM)
Array Infrastruktur yang disediakan oleh
Struktur data yang menyimpan Visual Basic untuk mengakses obyek-
sekumpulan elemen yang bertipe sama obyek atau kontrol-kontrol lain
sepanjang punya antar muka yang
Atribut dapat diakses oleh Visual Basic.
Karakteristik atau ciri yang
membedakan antara entitas satu Constraint
dengan entitas yang lainnya Batasan-batasan dari masalah

Authentication Control
Proses memeriksa keabsahan Aktivitas monitoring dan evaluasi
seseorang sebagai user (pengguna) terhadap feedback untuk menentukan
pada suatu system (misalnya pada apakah system telah bekerja dengan
DBMS) baik atau tidak

Basic Input/Output System (BIOS) Counter


Kode-kode program yang pertama kali Variable pencacah yang digunakan
dijalankan ketika komputer dinyalakan dalam struktur algoritma pengulangan
(booting)
Database Management System
Basis data (database) (DBMS)
Kumpulan dari data yang saling Perangkat Lunak yang khusus / spesifik
berhubungan satu dengan yang ditujukan untuk pengelolaan basis data
lainnya, tersimpan dalam perangkat
keras komputer dan digunakan Disk Operating System (DOS)
perangkat lunak untuk Salah satu sistem operasi lama berbasis
memanipulasinya CLI

Rekayasa Perangkat Lunak 427


Elektronika Ilmu komputer
Ilmu yang mempelajari alat listrik arus Suatu studi sistematis pada proses-
lemah yang dioperasikan dengan cara proses algoritma yang menjelaskan dan
mengontrol aliran elektron atau partikel mentransfor-masikan informasi
bermuatan listrik dalam suatu alat
Inheritance atau pewarisan
Entitas Prinsip pewarisan sifat dari orang tua
Individu yang mewakili sesuatu yang ke anak atau turunannya yang
nyata (eksistensinya) dan dapat diterapkan pada kelas
dibedakan dari sesuatu yang lain
Inisialisasi
Extensible Hypertext Markup Instruksi yang dilakukan pertama kali
Language (XHTML) pada suatu variabel atau ekpresi
HTML versi terakhir (4.01) yang ditulis pemrograman
ulang dengan dengan aturan-aturan
yang lebih ketat mengacu pada XML Input
Elemen-elemen yang masuk ke dalam
Extensible Markup Language system
(XML)
Sekumpulan aturan untuk menyusun Integrated Developement
bahasa markup Environment (IDE)
Lingkungan pengembangan aplikasi
Feedback terintegrasi. Perangkat lunak untuk
Data tentang kinerja sistem membantu mempermudah pembuatan
aplikasi komputer
Flowchart
Skema/bagan (chart) yang Interpreter
menunjukkan aliran (flow) di dalam Penerjemah bahasa pemrograman
suatu program secara logika tingkat tinggi ke bahasa mesin dengan
cara satu per satu baris dibaca dan
Gejala langsung diterjemahkan
Signal atau tanda terjadinya suatu
masalah Kardinalitas
Jumlah maksimum entitas pada suatu
Gerbang logika himpunan entitas yang dapat berelasi
blok-blok penyusun dari perangkat dengan entitas pada himpunan entitas
keras elektronik yang lain

Graphical User Interface (GUI) Konstanta


Antar muka pengguna dengan model Variabel yang nilai datanya bersifat
grafis tetap dan tidak bisa diubah.

Identifier Loop
Nama dari suatu variable atau Proses pengulangan suatu perintah
konstanta

428 Lampiran
Masalah (problem)
Perbedaan antara situasi aktual dan Perangkat lunak
situasi yang diharapkan atau perbedaan Seluruh instruksi yang digunakan untuk
antara kondisi sekarang dengan target memproses informasi
atau tujuan yang diinginkan
Permissions
Model Proses untuk menentukan apa yang
Penyederhanaan dari suatu system bisa dilakukan seorang pengguna pada
atau Tiruan dari suatu sistem dengan suatu sistem
sedikit atau banyak penyederhanaan
Pointer
Variabel yang menyimpan alamat pada
Multi-tasking memori komputer
Kemampuan sistem operasi untuk
menjalankan beberapa tugas / aplikasi Polymorphism
secara bersamaan Kemampuan dari suatu obyek untuk
mempunyai lebih dari satu bentuk
Multi-user
Kemampuan system operasi untuk Programmer
dijalankan oleh pengguna yang berbeda Seseorang yang bekerja membuat
pada waktu bersamaan program komputer

Output Prosedur
Perpindahan elemen-elemen yang • Instruksi yang dibutuhkan oleh
dihasilkan dari proses perubahan ke pengguna dalam memproses
tujuan yang diinginkan informasi
• Sekumpulan perintah yang
Pemecahan masalah merupakan bagian dari program
Sebuah proses dimana suatu situasi yang lebih besar yang berfungsi
dianalisa kemudian solusi-solusi dibuat mengerjakan suatu tugas tertentu
bila ditemukan ada masalah dengan
cara pendefinisian, pengurangan atau Proses
penghilangan, atau pencegahan Perubahan atau transformasi input
masalah menjadi output

Pemrograman Berorientasi Obyek Prototyping


(Object Oriented Programming – Salah satu pendekatan dalam
OOP) pengembangan perangkat lunak yang
Paradigma pemrograman yang secara langsung mendemonstrasikan
menggunakan obyek dan interaksinya bagaimana sebuah perangkat lunak
untuk merancang aplikasi dan program atau komponen-komponen perangkat
komputer lunak akan bekerja dalam
lingkungannya sebelum tahapan
Pemrograman web konstruksi aktual dilakukan
Usaha untuk membuat halaman web
dengan menggunakan bahasa
pemrograman web (script)
Rekayasa Perangkat Lunak 429
Pseudocode Stored procedure
Cara penulisan algoritma dengan Potongan kode program yang dapat
menggunakan kode-kode yang mirip menerima parameter input dan
dengan bahasa pemrograman menghasilkan satu atau lebih
parameter output dan digunakan untuk
Query operasi-operasi basis data
Permintaan atau pencarian pada data-
data tertentu pada suatu basis data Structured Query Language (SQL)
Bahasa query terstruktur untuk
Record mengelola basis data
Baris data dari suatu tabel
Strategi pemecahan masalah
Rekayasa Perangkat Lunak Metode atau pendekatan yang
suatu disiplin ilmu yang membahas digunakan seseorang ketika
semua aspek produksi perangkat lunak, menghadapi masalah
mulai dari tahap awal yaitu analisa
kebutuhan pengguna, menentukan Struktur algoritma
spesifikasi dari kebutuhan pengguna, Cara atau urutan untuk membuat suatu
disain, pengkodean, pengujian sampai algoritma
pemeliharaan sistem setelah digunakan
Tipe data
Relationship atau relasi Jenis data yang dapat diolah oleh
Hubungan yang terjadi antara sejumlah komputer untuk memenuhi kebutuhan
entitas dalam pemrograman komputer

Sistem Trigger
Kumpulan dari elemen-elemen yang Tipe khusus dari stored procedure yang
saling berinteraksi untuk mencapai akan dieksekusi ketika suatu kejadian
tujuan tertentu muncul

Sistem basis data Variabel


Kumpulan elemen-elemen seperti basis Tempat dimana kita dapat mengisi atau
data, perangkat lunak, perangkat keras, mengosongkan nilainya dan memanggil
dan manusia yang saling berinteraksi kembali apabila dibutuhkan pada suatu
untuk mencapai tujuan yaitu program
pengorganisasian data.
View
Software Tabel virtual yang isinya berdasarkan
Lihat Perangkat Lunak pada query yang dilakukan pada basis
data.
Software Engineering
Lihat Rekayasa Perangkat Lunak Web browser
Perangkat lunak yang berfungsi
Solusi menerjemahkan kode-kode HTML
Bagian akhir atau output dari proses menjadi tampilan yang kita kehendaki
pemecahan masalah.

430 Lampiran
Web dinamis
Halaman-halaman web yang isi dan
informasinya berubah-ubah sesuai
dengan permintaan pengguna

Web server
Perangkat lunak yang bertindak
melayani permintaan-permintaan client
terhadap halaman-halaman web
tertentu

Web statis
Halaman-halaman web yang isi dan
informasinya tidak berubah-ubah

Rekayasa Perangkat Lunak 431


432 Lampiran
Berikut ini daftar alamat situs-situs internet yang penting dan digunakan
sebagai rujukan dalam buku ini.

Alamat Keterangan
http://www.apache.org Situs resmi web server Apache. Situs ini
menyediakan kode sumber Apache dan file-file
binary Apache yang siap diinstall di berbagai
platform sistem operasi. Selain itu juga
menyediakan dokumentasi Apache yang lengkap.
http://www.borland.com Situs resmi Borland. Borland merupakan
perusahaan perangkat lunak yang memproduksi
Borland Delphi, Borland JBuilder, Turbo Pascal,
Turbo Delphi, Borland C++ dan lain-lain.
http://www.debian.org Situs resmi distribusi linux Debian.
http://www.eclipse.org Situs resmi proyek eclipse, perangkat
pengembang terpadu yang mendukung banyak
bahasa pemrograman.
http://www.google.com Situs resmi search engine Google.
http://www.ilmukomputer.com Situs berbahasa Indonesia yang menyediakan
dokumen-dokumen untuk belajar berbagai sub
bidang dalam ilmu computer.
http://www.javasoft.com Situs resmi yang diluncurkan Sun Microsystem
dan berisi dokumentasi dan informasi online
tentang bahasa pemrograman Java.
http://www.kambing.vlsm.org Situs dengan server local di Indonesia. Situs ini
menyediakan file-file iso dari berbagai jenis
distribusi linux dan dapat didownload secara
bebas. Selain itu situs ini juga sebagai mirror dari
berbagai distribusi linux dan aplikasi yang
berjalan di linux.
http://www.linuxdoc.org Situs yang berisi dokumentasi bebas tentang
linux. Sumber informasi online yang sangat
bagus untuk mempelajari linux

Rekayasa Perangkat Lunak 433


http://www.microsoft.com Situs resmi Microsoft. Microsoft merupakan
perusahaan perangkat lunak yang memproduksi
system operasi keluarga Windows, IDE Microsoft
Visual Studio, Microsoft Office, Microsoft SQL
Server, dan lain-lain.
http://www.mysql.com Situs resmi MySQL Database Software. Situs ini
menyediakan file-file instalasi MySQL untuk
berbagai platform sistem operasi. Selain itu juga
menyediakan dokumentasi MySQL yang lengkap.
http://www.netbeans.org Situs resmi IDE Netbeans, perangkat lunak
pengembang aplikasi Java
http://www.php.net Situs resmi bahasa pemrograman dan interpreter
PHP. Situs ini menyediakan kode sumber dan
file-file instalasi PHP untuk berbagai platform
sistem operasi. Selain itu juga menyediakan
dokumentasi PHP yang lengkap.
http://www.w3.org Situs resmi The World Wide Web Consortium
(W3C). W3C adalah konsorsium yang
menentapkan standar dalam teknologi internet,
terutama tentang HTML, XML, CSS, XHTML dan
teknologi lain. Dokumentasi tentang teknologi
tersebut dapat dijumpai di situs ini.

434 Lampiran
IsNumeric(ekspresi)
Fungsi ini digunakan untuk menguji apakah suatu ekspresi menghasilkan nilai
numeric atau bukan. Nilai yang dikembalikan adalah Boolean.
IsEmpty(ekspresi)
Fungsi untuk memeriksa apakah suatu ekspresi telah berisi nilai atau tidak.
Nilai yang dikembalikan adalah Boolean..
IsNull(ekspresi)
Fungsi untuk memeriksa apakah suatu ekspresi mengandung data yang tidak
valid, biasanya digunakan untuk memeriksa isi field recordset.
IsArray(varname)
Fungsi untuk memeriksa apakah suatu variabel adalah suatu array.
IsDate(ekspresi)
Fungsi untuk memeriksa apakah suatu ekspresi dapat dikonversi ke date.
IsError(ekspresi)
Fungsi untuk memeriksa apakah suatu ekspresi adalah nilai error
IsObject(ekspresi)
Fungsi untuk memeriksa apakah suatu ekspresi mengacu pada suatu OLE
Automation object.
IsMissing(argname)
Fungsi untuk memeriksa apakah suatu argumen optional pada procedure ada
dilewatkan atau tidak
CBool(ekspresi)
Konversi suatu ekspresi ke Boolean
CByte(ekspresi)
Konversi ekspresi ke Byte
CCur(ekspresi)
Konversi suatu ekspresi ke Currency
CDate(date)
Konversi suatu ekspresi ke date
CDbl(ekspresi)
Konversi suatu ekspresi ke Double
CInt(ekspresi)
Konversi suatu ekspresi ke Integer

Rekayasa Perangkat Lunak 435


CLng(ekspresi)
Konversi suatu ekspresi ke Long
CSng(ekspresi)
Konversi suatu ekspresi ke single
CStr(ekspresi)
Konversi suatu ekspresi ke string
CVar(ekspresi)
Konversi suatu ekspresi ke Variant
Asc(string)
Fungsi untuk menampilkan kode character dari huruf pertama di suatu string.
Chr(charcode)
Fungsi untuk menampilkan karakter dari suatu kode karakter
Format(ekspresi[, format[, hariPertamaDariMinggu[,
mingguPertamaDariTahun]]])
Memformat suatu ekspresi berdasarkan ekspresi format
Hex(number) dan Oct(number)
Menampilkan string yang mewakili Octal atau Hexa dari suatu bilangan
Str(number)
Menampilkan string yang mewakili suatu angka.
Val(string)
Menampilkan angka yang terkandung dalam suatu string.
Now
Mengembalikan suatu Variant (Date) yang menunjukkan tanggal dan waktu
berdasarkan sistem komputer.
Time
Mengembalikan waktu sistem sekarang
Timer
Mengembalikan suatu bilangan yang menunjukan jumlah detik sejak tengah
malam
Date
Mengembalikan tanggal sistem sekarang
Time = Time dan Date = Date
Mengatur waktu atau tanggal sistem
Untuk sistem yang menjalankan Microsoft Windows 95, tanggal yang
dibutuhkan harus berupa tanggal dari 1 Jan 1998 sampai 31 Des 2099. Untuk
sistem yang menjalankan Microsoft Windows NT, tanggal yang dibutuhkan
harus berupa tanggal dari 1 Jan 1980 sampai 31 Desember 2079.
Hour(time), Minute(time) dan Second(time)
Mengembalikan suatu Variant (Integer) berupa bilangan 0 s/d 23 untuk jam, 0
s/d 59 untuk menit, dan 0 s/d 59 untuk detik.
436 Lampiran
Day(date), Month(date), dan Year(date)
Mengembalikan suatu Variant (Integer) berupa bilangan 1 s/d 31 untuk bulan,
1 s/d 12 untuk bulan, dan tahun.

Rekayasa Perangkat Lunak 437


Aunur Rofiq Mulyarto, penulis buku ini lahir di
Blitar pada tanggal 25 Nopember 1970. Pada usia 4
tahun, keluarganya pindah ke Kota Malang, sehingga
masa kecil dihabiskan di Kota Malang. Menyelesaikan
sekolah dasar pada SDN Dinoyo 2 Malang dan sekolah
menengah pertama pada MTs Negeri 1 Malang. Penulis
kemudian melanjutkan pada SMA Negeri 2 di kota yang
sama.
Setamat dari SMA pada tahun 1989, penulis melanjutkan ke jenjang
perguruan tinggi di Institut Pertanian Bogor, melalui jalur PMDK (Penelusuran
Minat dan Bakat). Jurusan yang diambil adalah Teknologi Industri Pertanian.
Setelah berkutat dengan bangku kuliah selama kurang lebih 5 tahun, pada
tahun 1994 penulis berhasil memperoleh gelar Sarjana Teknologi Pertanian.
Setelah lulus, penulis sempat bekerja pada sebuah perusahaan sepatu di
Sidoarjo, sebelum diterima menjadi staf pengajar pada Jurusan Teknologi
Industri Pertanian, Fakultas Teknologi Pertanian, Universitas Brawijaya Malang
pada tahun 1999. Pada tahun 2001 penulis memperoleh kesempatan tugas
belajar pada Program Internasional Master of Science in Information
Technology for Natural Resources Management yang diselenggarakan oleh
IPB dan SEAMEO – BIOTROP. Gelar Master diperoleh pada tahun 2003
dengan predikat cumlaude.
Saat ini selain aktif sebagai staf pengajar Jurusan Teknologi Industri
Pertanian, Fakultas Teknologi Pertanian, Universitas Brawijaya Malang, penulis
juga terlibat dalam beberapa penelitian, pengabdian dan proyek-proyek
pengembangan sistem informasi. Penulis cukup aktif menulis beberapa karya
ilmiah, antara lain buku teks Teknik Pemrograman, buku Teks Sistem dan
Teknologi Informasi, dan sejumlah tulisan jurnal ilmiah. Di sela-sela
kesibukannya, penulis masih sempat menyalurkan hobi lamanya bermain
music bersama rekan-rekan sejawatnya.

Rekayasa Perangkat Lunak 439

Anda mungkin juga menyukai