BAB II LANDASAN TEORI
II.1 Pengenalan Algoritma Kata algoritma berasal dari nama seorang ahli matematika dan astronomi berkebangsaan persia, penulis buku “ Aljabar wal muqabala “ yang bernama Abu Ja’far Muhammad ibnu Musa Al-Kwarizmi pada beberapa abad yang lalu (diperkirakan wafat pada tahun 850) yang dianggap sebagai pencetus pertama algoritma karena didalam buku tersebut Abu Ja’far menjelaskan langkah-langkah dalam menyelesaikan berbagai persoalan aritmetika (aljabar).kemungkinan besar kata algoritma diambil dari kata al-kwarizmi yang kemudian berubah menjadi algorism , selanjutnya menjadi algorithm.( Suarga, 2012).
II.1.1 Definisi Algoritma Defenisi Algortima adalah : 1. Teknik penyusunan langkah-langkah penyelesaian masalah dalam bentuk kalimat dengan jumlah kata terbatas tetapi tersusun secara logis dan sistematis. 2. Suatu prosedur yang jelas untuk menyelesaikan suatu persoalan dengan menggunakan langkah-langkah tertentu dan terbatas jumlahnya. 3. Susunan langkah yang pasti, yang bila diikuti maka akan mentransfortasi data input menjadi output yang berupa informasi. (Suarga, 2012) Algoritma dapat diimplementasikan dalam pembuatan program komputer. Kesalahan dalam merancang algoritma untuk menyelesaikan suatu problema dapat menyebabkan program gagal dalam implementasinya.
7
8
Konsep dari suatu algoritma sering diilustrasikan dengan mengambil contoh sebuah resep, walaupun banyak algoritma yang jauh lebih kompleks. Algoritma sering memiliki beberapa langkah perulangan (iterasi) atau memerlukan pengambilan keputusan seperti logika (logic) atau perbandingan (comparison) sampai pekerjaan diselesaikan. Menerapkan suatu algoritma secara benar belum tentu dapat menyelesaikan problema. Hal ini dikarenakan adanya kemungkinan algoritma tersebut rusak atau cacat, atau penerapannya tidak cocok (tidak tepat) untuk menyelesaikan problema. Sebagai contoh, sebuah algoritma hipotesis untuk membuat sebuah salad kentang akan gagal jika tidak terdapat kentang. Algoritma adalah hal yang mendasar untuk komputer dalam memproses informasi, karena sebuah program komputer adalah sebuah algoritma yang memberitahukan kepada komputer langkah-langkah spesifik yang akan dijalankan (dalam urutan spesifik) untuk melakukan pekerjaan tertentu, misalnya menghitung gaji karyawan atau mencetak rapor murid. Oleh karena itu, algoritma dapat dianggap sebagai beberapa operasi sekuensial (terurut) yang dapat dijalankan oleh sebuah sistem lengkap Turing. Hukum di beberapa negara seperti Amerika Serikat, mengizinkan beberapa algoritma untuk mendapatkan hak paten secara efektif, walaupun kemungkinan tersedianya algoritma tersebut dalam sebuah perwujudan fisik (physical embodiment). Sebagai contoh, sebuah algoritma perkalian mungkin diwujudkan dalam unit aritmatika dalam sebuah mikroprosesor.
9
II.1.2 Penerapan Algoritma Algoritma tidak hanya di implementasikan dalam program komputer, tetapi juga dalam bidang lain, seperti jaringan neural biologis (biological neural network), otak manusia dalam menghitung operasi aritmatika, serangga dalam proses mencari makanan, peralatan mekanik, dan sebagainya Ketika suatu pekerjaan akan dilakukan maka tanpa sadar otak kita sudah merencanakan bagaimana pekerjaan tersebut akan dilaksanakan, misalkan ketika anda berpikir akan makan siang di suatu kedai siap saji. Di dalam benak anda mulai timbul rencana, yang mungkin antara lain adalah sebagai berikut : Anda akan makan dikedai siap saji terdekat, memilih menu sesuai selera, dan setelah makan akan menuju ke tempat lain. Langkah rinci yang akan dilakukan adalah sebagai berikut : 1.
Cari lokasi kedai siap saji terdekat.
2.
Bergerak menuju lokasi.
3.
Setelah sampai, melihat dimana tempat memesan makanan.
4.
Antri di tempat pemesanan.
5.
Melihat daftar menu dan memilih makanan.
6.
Memesan makanan sesuai selera.
7.
Membayar harga pesanan.
8.
Menunggu pesanan.
9.
Menerima pesanan.
10. Mencari meja kosong. 11. Meletakan makanan di atas meja dan kemudian duduk.
10
12. Menikmati makanan. 13. Setelah selesai, meninggalkan kedai tersebut. Langkah rinci yang anda lakukan ini tidak lain merupakan algoritma untuk menyelesaikan satu masalah, yaitu makan siang. (Suarga, 2012)
II.1.3 Ciri dan sifat Algoritma Menurut Donald E.Knuth, seorang penulis beberapa buku algoritma Abad XX menyatakan bahwa ada beberapa ciri algoritma, yaitu: 1. Algoritma mempunyai awal dan akhir, suatu algortima harus berhenti setelah mengerjakan serangkaian tugas. Dengan kata lain, suatu algoritma memiliki langkah yang terbatas. 2. Setiap langkah harus didefenisikan dengan tepat sehingga tidak memiliki arti ganda, tidak membingungkan (not ambiguos). 3. Memiliki masukan (input) atau kondisi awal. 4. Memiliki keluaran (output) atau kondisi akhir. 5. Algoritma harus efektif, bila diikuti benar-benar maka akan menyelesaikan persoalan. Berdasarkan ciri algoritma yang dipaparkan Donald Knuth dan defenisi algoritma, dapat disimpulkan bahwa sifat utama suatu algoritma adalah sebagai berikut: 1. Input: Suatu algoritma memiliki input atau kondisi awal sebelum dilaksanakan, bisa berupa nilai-nilai peubah yang diambil dari himpunan khusus.
11
2. Output: Suatu algoritma akan menghasilkan output setelah dilaksanakan, atau algoritma akan mengubah kondisi awal menjadi kondisi akhir, di mana nilai output diperoleh dari nilai input yang diproses melalui algoritma. 3. Definiteness: Langkah-langkah yang dituliskan dalam algoritma terdefenisi dengan jelas sehingga mudah dilaksanakan oleh pengguna algoritma. 4. Finiteness: Suatu algoritma harus memberi kondisi akhir atau output setelah sejumlah langkah yang terbatas jumlahnya dilakukan terhadap setiap kondisi awal atau input yang diberikan. 5. Effectiveness: Setiap langkah dalam algoritma bisa dilaksanakan dalam suatu selang waktu tertentu sehingga pada akhirnya didapatkan solusi sesuai yang diharapkan. 6. Generality: Langkah-langkah algoritma berlaku untuk setiap himpunan input yang sesuai dengan persoalan yang diberikan, tidak hanya untuk himpunan tertentu. (Suarga, 2012)
II.1.4 Struktur Algoritma Agar algoritma dapat ditulis lebih teratur maka struktur algoritma sebaiknya dibagi ke dalam beberapa bagian. Salah satu struktur yang sering dijadikan patokan adalah sebagai berikut: 1. Bagian Kepala (Header): Memuat nama algoritma serta informasi atau keterangan tentang algoritma yang ditulis.
12
2. Bagian Deklarasi (Defenisi Variabel): Memuat defenisi nama variabel, nama tetapan, nama prosedur, nama fungsi, tipe data yang akan digunakan dalam algoritma. 3. Bagian Deskripsi (Rincian Langkah): Memuat langkah-langkah penyelesaian masalah, termasuk beberapa perintah seperti baca data, tampilkan, ulangi, yang mengubah data input menjadi output,dsb. Berikut ini contoh struktur sebuah algortima. Algoritma ini akan menghitung nilai rata sejumlah angka yang dimasukkan lewat keyboard. Algoritma Nilai_Rata {Menghitung nilai rata sejumlah bilangan yang dimasukkan lewat keyboard} Defenisi Variabel Integer x, N, k, jumlah; real nilai_rata; Rincian Langkah {masukkan jumlah data} read(N); k←1; jumlah ←0; while (k <= N) do {baca data} read(x); jumlah←jumlah + x; k ← k+1;
13
endwhile {hitung nilai rata} Nilai_rata←jumlah/N; Write (nilai_rata); (Suarga, 2012)
II.2 Pengertian Aplikasi Aplikasi merupakan rangkaian kegiatan atau perintah untuk dieksekusi oleh komputer atau suatu perangkat lunak komputer yang memanfaatkan kemampuan komputer langsung untuk melakukan suatu tugas yang diinginkan pengguna. Beberapa aplikasi yang digabung bersama menjadi suatu paket kadang disebut sebagai suatu paket atau suite aplikasi (application suite). Aplikasiaplikasi dalam suatu paket biasanya memiliki antar muka pengguna yang memiliki kesamaan sehingga memudahkan pengguna untuk mempelajari dan menggunakan tiap aplikasi. Sering kali, mereka memiliki kemampuan untuk saling berinteraksi satu sama lain sehingga menguntungkan pengguna. Berdasarkan jenisnya, aplikasi dapat dibagai menjadi beberapa jenis, diantaranya: a. Aplikasi Jaringan Jaringan komputer atau jeringan adalah koordinasi komunikasi dalam suatu sistem tertentu diantara central atau pusat (server) dan beberapa anggotanya (client).
14
b. Aplikasi Grafik Aplikasi komputer grafik awal perkembangannya dimulai pada akhir tahun 1950-an dan awal 1960-an. Pada saat itu program komputer digunakan dengan menarik sebuah gambar yang memberikan dimensi baru pada bidang komputer. c. Aplikasi Animasi Merupakan bentuk seni yang dapat menimbulkan gerakan pada suatu objek. Untuk mencapai efek tersebut, animator harus membangun rangkaian gambar (frame) dari sebuah subjek, yang setiap frame berikutnya sedikit berbeda dari frame sebelumnya. d. Aplikasi Web Merupakan bagian dari internet sebagai komunitas jaringan komputer yang memberikan pelayanan http (world wide web). WWW adalah aplikasi yang paling menarik di Internet, seperti browsing, aplikasi ini sangat penting dan banyak digunakan. Aplikasi ini kadang disebut The Killer Application atau the world is at your fingertip karena kita boleh mendapatkan informasi apa saja dengan begitu mudah bukan sekadar teks bahkan gambar (images), maupun multimedia. e. Aplikasi Pendidikan Istilah aplikasi ini disebut Computer Assisted Instruction (CAI) yaitu komputer secara langsung digunakan dalam proses belajar, sebagai pengganti pengajar ataupun buku. Contoh aplikasi CAI adalah Drill and Practice, Tutorial dan Simulasi.
15
f. Aplikasi Perkantoran Setiap bisnis, besar atau kecil, memproses sejumlah data yang besar dalam operasi hariannya. Data diperoleh dari payroll, faktur customer dan rekening keuangan, inventaris manajemen, dan rekening biaya customer yang semuanya harus dikalkulasi, disimpan, diklasifikasikan, disortir, diretriev, diproses kembali, dilaporkan, dikomunikasi dan disebarkan pada suatu waktu. Pemrosesan data seperti itu dikenal sebagai Business Data Processing atau Data Processing (DP). Jika pemrosesan ini dilakukan dengan komputer, maka hal ini dikenal dengan Electronic Data Processing (EDP).
II.3 Pengertian Keylogger Keylogger adalah suatu aplikasi atau software yang dapat mengunci tombol keyboard dengan menggunakan program logger tertentu. Sehingga, apapunyang diketikkan oleh user di layar monitor, dapat terekam. Artinya, meskipun saat mengetikkan password di kotak password yang tampil di monitor hanyalah'*****' misalnya, namun isi password tersebut dapat terekam dan otomatis dapat terbaca. Keylogger berasal dari kata kerja “log”. Orang/program yang melakukan aktifitas log ini namanya “logger ”. Sedangkan “logging” berarti adalah istilah untuk kegiatan “merekam” aktifitas log-nya. (Vina Widyani Cahyadianti, 2012). Keylogger dapat digunakan untuk kepentingan yang baik atau bahkan bisa digunakan untuk kepentingan yang jahat. Kepentingan yang baik antara lain untuk memantau produktivitas karyawan, untuk penegakan hukum dan pencarian bukti kejahatan. Kepentingan yang buruk antara lain pencurian data dan password.
16
Penggunaan keylogger sangat banyak sekarang ini terutama untuk perbuatan yang tidak baik seperti pencurian password dan identitas lain, selain untuk perbuatan negatif keylogger juga bisa digunakan untuk memantau aktifitas pada komputer kantor yang dilakukan oleh pimpinan.
II.3.1 Kategori Keylogger Merupakan program perangkat lunak yang dirancang untuk bekerja pada sistem operasi komputer target. Dari perspektif teknis ada lima kategori perangkat lunak keylogger: 1. Berbasis hypervisor: Keylogger ini secara teoritis dapat berada dalam malware hypervisor yang berjalan di bawah sistem operasi, yang tetap tak tersentuh. Keylogger ini secara efektif menjadi sebuah mesin virtual. Blue Pill adalah contohnya. 2. Berbasis Kernel: Metode ini sulit baik untuk ditulis maupun untuk dilawan. Keylogger seperti ini berada di tingkat kernel dan dengan demikian sulit untuk dideteksi, terutama untuk aplikasi mode-pengguna. Keylogger ini sering diimplementasikan sebagai rootkit yang menumbangkan kernel sistem operasi dan mendapatkan akses tidak sah ke perangkat keras, membuatnya menjadi sangat kuat. Keylogger yang menggunakan metode ini dapat bertindak sebagai device driver keyboard misalnya, dan dengan demikian bisa mendapatkan akses ke setiap informasi yang diketik pada keyboard selama berada dalam sistem operasi.
17
3. Berbasis API: Keyloggers ini "mengait" API keyboard; kemudian sistem operasi memberitahukan keylogger setiap kali tombol ditekan dan otomatis keylogger akan mencatatnya. API pada Windows, seperti GetAsyncKeyState(), GetForegroundWindow(), dll digunakan untuk menyelidiki keadaan keyboard atau untuk memantau kegiatan keyboard. Keylogger jenis ini adalah yang paling mudah untuk menulis, tetapi pada keylogger ini penyelidikan secara konstan pada setiap kunci diperlukan, hal ini dapat menyebabkan peningkatan penggunaan CPU yang cukup terlihat, dan juga dapat melewatkan beberapa kunci. Contoh keylogger saat ini dapat menyelidiki BIOS untuk pra-boot otentikasi PIN yang belum dibersihkan dari memori. 4. Berbasis menangkap formulir: Keylogger yang menangkap formulir mencatat pengiriman formulir web dengan merekam fungsi pengiriman web browsing. Catatan ini membentuk data sebelum melalui Internet dan melewati enkripsi HTTPS. 5. Packet analyzers: keylogger ini melibatkan penangkapan lalu lintas jaringan yang terkait dengan kegiatan HTTP POST untuk mengambil password yang tidak terenkripsi.
II.3.2 Jenis Keylogger Keylogger sendiri memiliki 2 jenis yaitu software keylogger dan hardware keylogger, berikut adalah penjelasannya:
18
1. Software Keylogger Software (perangkat lunak). Software terinstall di komputer target secara invisible (tersembunyi) sehingga orang yang menggunakan komputer tersebut tidak akan menyadari kehadiran program ini. Program tersebut akan merekam semua aktivitas keyboard, tombol apa saja yang tekan oleh si pengguna komputer. Sehingga jika aktivititas yang dilakukan adalah berselancar di internet, maka alamat situs yang dikunjungi (yang diketik), isi surat yang sangat rahasia (yang diketik), user name dan PASSWORD email, user dan password facebook, bahkan Nomor kartu kredit atau PIN yang digunakan untuk transaksi keuangan online. 2. Hardware Keylogger Hardware (perangkat keras). Fungsi alat ini sama dengan jenis software, hanya saja tool ini berbentuk sebuah alat yang dipasang untuk menghubungkan keyboard dan CPU/laptop. Alat ini laksana flashdisk dengan memori/kapasitas tertentu akan menyimpan hasil rekaman semua penekanan keyboard secara otomatis. (Vina Widyani Cahyadianti, 2012)
II.4 Metode String Matching Pengertian Structures,
string
National
menurut Dictionary
of Algorithms
and
Data
Institute of Standards and Technology (NIST) adalah
susunan dari karakter-karakter (angka, alfabet atau karakter yang lain) dan biasanya direpresentasikan sebagai struktur data array. String dapat berupa kata, frase, atau kalimat. Pencocokan string merupakan bagian penting dari sebuah proses pencarian string
(string searching)
dalam
sebuah
dokumen.
Hasil dari
19
pencarian sebuah string dalam dokumen tergantung dari teknik atau cara pencocokan
string yang digunakan. Pencocokan string (string matching)
menurut Dictionary of Algorithms and Data Structures, National Institute of Standards and Technology (NIST), diartikan sebagai sebuah permasalahan untuk menemukan pola susunan karakter string di dalam string lain atau bagian dari isi teks. Pencocokan string (string matching) secara garis besar dapat dibedakan menjadi dua yaitu: a.
Exact string matching, merupakan pencocokan string secara tepat dengan susunan karakter dalam string yang dicocokkan memiliki jumlah maupun urutan karakter dalam string yang sama. Contoh : kata step akan menunjukkan kecocokan hanya dengan kata step.
b.
Inexact string matching atau
Fuzzy
string
matching,
merupakan
pencocokan string secara samar, maksudnya pencocokan string dimana string yang dicocokkan memiliki kemiripan dimana keduanya memiliki susunan karakter yang berbeda (mungkin jumlah atau urutannya) tetapi string-string
tersebut
memiliki
kemiripan
baik
kemiripan
tekstual/penulisan (approximate string matching) atau kemiripan ucapan (phonetic string matching). (Mokhamad Syaroni, 2005)
II.5 Flowchart Flowchart (bagan alir) adalah skema atau bagian yang menggambarkan urutan kegiatan dari suatu program dari awal sampai akhir, dimana dalam bagan
20
alur ini digambarkan alur dari program. Tujuannya untuk mengilustrasikan urutan operasi logis yang diterapkan ke dalam penulisan program untuk digunakan dalam komputer. Simbol-simbol flowchart yang sering digunakan dalam program dapat dilihat pada Tabel II.1.
Tabel II.1 Simbol-Simbol Flowchart No 1
Simbol
Keterangan Simbol ini digunakan untuk memulai dan mengakhiri program
2
Simbol ini digunakan untuk melakukan input dan output suatu program
3
Simbol ini digunakan untk melakukan perulangan dalam keputusan
4
Simbol ini digunakan untuk menguji pilihan untuk mengambil keputusan
5
Simbol ini digunakan melanjutkan flowchart pada halaman berikutnya sebagai penghubung
6
Simbol ini digunakan untuk penghubung melanjutkan program dalam satu halaman atau halaman berikutnya
21
7
Simbol ini digunakan untuk menunjuk arah program
Sumber : Kendal & Kendal, 2003 : 185
II.6 Visual Basic.Net Visual studio 2008 merupakan suatu perangkat lunak yang digunakan untuk pengembangan berbagai macam aplikasi yang memiliki berbagai macam tipe antara lain aplikasi desktop (windows form, command line(console)). Aplikasi web, windows mobile (pocket PC). Visual studio 2008 diluncurkan Microsoft pada tanggal 10 November 2007, dan memiliki lebih dari satu kompiler, SDK (Software Development Kid), dan dokumentasi tutorial ( MSDN Library). Kompiler yang dimasukkan ke dalam paket Visual Studio 2008 antara lain C++, Visual C#, Visual Basic, Visual InterDev, Visual J++, Visual J#, Visual FoxPro, dan Visual SourceSafe. Dan kesemuanya ditujukkan untuk flatform .Net Framework 3.5 . Visual Studio 2008 dapat digunakan untuk mengembangkan aplikasi dalam bentuk bahasa mesin yang berjalan di atas windows ataupun dalam bentuk Microsoft Inntermediate Languange di atas windows di atas .NET Framework. Selain itu, Visual Studio 2008 juga dapat digunakan untuk mengembangkan aplikasi Silverlight, aplikasi Windows Mobile (yang berjalan di atas .NET Compact Framework 3.5).
22
Apakah Visual Basic .NET dianggap sebagai sebuah versi Visual Basic atau benar-benar bahasa yang berbeda merupakan sebuah topik perdebatan yang hangat. Hal ini dikarenakan sintaksis bahasa Visual Basic .NET tidak mengalami perubahan yang sangat drastis, dan hanya menambahkan beberapa dukungan fitur baru seperti penanganan eksepsi secara terstruktur dan ekspresi yang bisa di-shortcircuit-kan. Dua perubahan tipe data pun terjadi saat berpindah ke Visual Basic .NET. Dibandingkan dengan Visual Basic 6.0, tipe data Integer yang dimiliki oleh Visual Basic .NET memiliki panjang dua kali lebih panjang, dari 16 bit menjadi 32 bit. Selain itu, tipe data Long juga sama-sama berubah menjadi dua kali lipat lebih panjang, dari 32 bit menjadi 64 bit. Bilangan bulat 16-bit dalam Visual Basic .NET dinamakan dengan Short. Lagi pula, desainer GUI Windows Forms yang terdapat di dalam Visual Studio .NET atau Visual Basic .NET memiliki gaya yang sangat mirip dengan editor form Visual Basic klasik. Jika sintaksis tidak banyak yang berubah, lain halnya dengan semantik, yang berubah secara signifikan. Visual Basic .NET merupakan sebuah bahasa pemrograman yang mendukung fitur "Bahasa Pemrograman Berorientasi Objek" secara penuh, karena memang didukung oleh arsitektur Microsoft .NET Framework, yang mengandung kombinasi dari Common Language Runtime dan Base Class Library. Visual Basic klasik, hanya merupakan sebuah bahasa pemrogaman berbasis objek, yang berjalan di atas arsitektur Component Object Model (COM). Perubahan ini telah mengubah banyak asumsi tentang hal yang benar yang harus dilakukan dengan mempertimbangkan performa dan kemudahan untuk
23
dipelihara. Beberapa fungsi dan pustaka perangkat lunak, yang ada di dalam Visual Basic klasik, kini tidak terdapat di dalam Visual Basic .NET; mungkin masih banyak yang masih terdapat di dalam Visual Basic .NET, tapi tidak seefisien apa yang ditawarkan oleh .NET Framework. Bahkan jika program Visual Basic klasik bisa dikompilasi dengan benar, sebagian besar program Visual Basic klasik harus melalui beberapa proses refactoring untuk mengadopsi fitur bahasa baru secara keseluruhan.
Gambar II.1. Visual Basic.Net Sumber : Rahmat Priyanto, Langsung Bisa Visual Basic.Net 2008