• Tidak ada hasil yang ditemukan

Otomatisasi Indeks Ebook Algorithms Dengan Menggunakan Algoritma Knuth-Morris- Pratt Dan Algoritma Quicksort

N/A
N/A
Protected

Academic year: 2017

Membagikan "Otomatisasi Indeks Ebook Algorithms Dengan Menggunakan Algoritma Knuth-Morris- Pratt Dan Algoritma Quicksort"

Copied!
90
0
0

Teks penuh

(1)

Listing Program

/*

* To change this template, choose Tools | Templates * and open the template in the editor.

public class Tentangalgoritma extends javax.swing.JFrame { /**

* This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jPanel1.setBackground(new java.awt.Color(0, 0, 204));

kmp.setBackground(new java.awt.Color(255, 255, 255));

kmp.setFont(new java.awt.Font("Times New Roman", 1, 12)); // NOI18N kmp.setText("Knuth-Morris-Pratt");

(2)

public void actionPerformed(java.awt.event.ActionEvent evt) { kmpActionPerformed(evt);

} });

menu.setBackground(new java.awt.Color(255, 255, 255));

menu.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N menu.setText("Kembali Ke Menu");

menu.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { menuActionPerformed(evt);

} });

quicksort.setBackground(new java.awt.Color(255, 255, 255));

quicksort.setFont(new java.awt.Font("Times New Roman", 1, 12)); // NOI18N quicksort.setText("Quicksort");

quicksort.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {

jScrollPane1.setViewportView(hasilalgoritma);

jLabel1.setBackground(new java.awt.Color(248, 248, 248));

jLabel1.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setText("Tentang Algoritma Skripsi");

javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);

jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) );

jPanel2Layout.setVerticalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 42, Short.MAX_VALUE)

(3)

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);

jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup()

.addGap(21, 21, 21)

.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 465, Short.MAX_VALUE)

.addContainerGap())

.addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, .addGroup(jPanel1Layout.createSequentialGroup()

(4)

Listing Program

/*

* To change this template, choose Tools | Templates * and open the template in the editor.

public class Bacabuku extends javax.swing.JFrame { /**

* This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor.

*/

jPanel1.setBackground(new java.awt.Color(51, 102, 255)); jButton3.setBackground(new java.awt.Color(255, 255, 255));

jButton3.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N jButton3.setText("Cari kata");

jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt);

(5)

jButton4.setBackground(new java.awt.Color(255, 255, 255));

jButton4.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N jButton4.setText("Kembali Ke Menu");

jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt);

} });

jButton5.setBackground(new java.awt.Color(255, 255, 255));

jButton5.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N jButton5.setText("Upload File");

jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup()

.addContainerGap(108, Short.MAX_VALUE)

.addComponent(teksfile, javax.swing.GroupLayout.PREFERRED_SIZE, 1053, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(87, 87, 87))

.addGroup(jPanel1Layout.createSequentialGroup() .addGap(220, 220, 220) .addGroup(jPanel1Layout.createSequentialGroup()

(6)

.addComponent(teksfile, javax.swing.GroupLayout.PREFERRED_SIZE,

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup()

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

java.awt.Dimension screenSize =

java.awt.Toolkit.getDefaultToolkit().getScreenSize();

(7)

// TODO add your handling code here:

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

(8)

new Bacabuku().setVisible(true); }

}); }

// Variables declaration - do not modify private javax.swing.JButton jButton3;

private javax.swing.JButton jButton4; private javax.swing.JButton jButton5; private javax.swing.JPanel jPanel1; private java.awt.TextArea teksfile;

// End of variables declaration }

/*

* To change this template, choose Tools | Templates * and open the template in the editor.

public class Help extends javax.swing.JFrame {

/**

@SuppressWarnings("unchecked")

(9)

jPanel1.setBackground(new java.awt.Color(0, 51, 153));

jButton1.setBackground(new java.awt.Color(255, 255, 255)); jButton1.setText("Cara Melakukan Pencarian kata");

jButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton1ActionPerformed(evt); }

});

jButton3.setBackground(new java.awt.Color(255, 255, 255)); jButton3.setText("Cara Mengupload File");

jButton3.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton3ActionPerformed(evt); }

});

jButton3.addAncestorListener(new javax.swing.event.AncestorListener() {

public void ancestorMoved(javax.swing.event.AncestorEvent evt) {

}

public void ancestorAdded(javax.swing.event.AncestorEvent evt) {

keluar.setBackground(new java.awt.Color(255, 255, 255)); keluar.setText("Keluar");

keluar.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

keluarActionPerformed(evt); }

});

jButton5.setBackground(new java.awt.Color(255, 255, 255)); jButton5.setText("Kembali Ke Menu");

jButton5.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

(10)

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);

jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING)

.addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap()

(11)

jPanel2.setBackground(new java.awt.Color(255, 255, 255));

jLabel2.setFont(new java.awt.Font("Times New Roman", 1, 24)); // NOI18N

jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel2.setText("Panduan Menggunakan Aplikasi");

javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);

(12)

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

setBounds((screenSize.width-971)/2, (screenSize.height-494)/2, 971, 494);

}// </editor-fold>

private void keluarActionPerformed(java.awt.event.ActionEvent evt) {

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

panduan.setText("1. Klik button upload dalam halaman Bacabuku \n2. Kemudian ambil sebuah file yang hanya beformat pdf di dalam komputer anda \n3. Lalu klik file tersebut, kemudian klik open, tunggu beberapa saat file akan terbuka");

// panduan.append("");

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

(13)

panduan.append("yang terbesar berserta waktu penyortiran kata tersebut di teks runiingtime algoritma Quicksort");

}

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.awt.EventQueue.invokeLater(new Runnable() { public void run() {

new Help().setVisible(true); }

(14)

// Variables declaration - do not modify private javax.swing.JButton jButton1;

private javax.swing.JButton jButton3; private javax.swing.JButton jButton5; private javax.swing.JLabel jLabel2; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2;

private javax.swing.JScrollPane jScrollPane1; private javax.swing.JButton keluar;

private javax.swing.JTextArea panduan;

// End of variables declaration }

/*

* To change this template, choose Tools | Templates * and open the template in the editor.

public class Login extends javax.swing.JFrame {

/**

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

passwordtextfield = new javax.swing.JPasswordField(); Cancel = new javax.swing.JButton();

Login = new javax.swing.JButton();

(15)

jPanel1.setBackground(new java.awt.Color(153, 0, 0)); jPanel2Layout.setHorizontalGroup(

jPanel3.setBackground(new java.awt.Color(153, 0, 0));

jLabel3.setBackground(new java.awt.Color(255, 0, 0)); jLabel3.setFont(new java.awt.Font("Kartika", 0, 12)); // NOI18N

jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel3.setText("Password");

jLabel4.setBackground(new java.awt.Color(204, 0, 0)); jLabel4.setFont(new java.awt.Font("Kartika", 0, 12)); // NOI18N

jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel4.setText("Username");

jLabel2.setBackground(new java.awt.Color(255, 102, 102)); jLabel2.setFont(new java.awt.Font("Trajan Pro", 1, 14)); // NOI18N

jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel2.setText("Login");

Cancel.setBackground(new java.awt.Color(255, 255, 255)); Cancel.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N Cancel.setText("Cancel");

Cancel.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

(16)

} });

Login.setBackground(new java.awt.Color(255, 255, 255)); Login.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N Login.setText("Login");

Login.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jPanel3Layout.setHorizontalGroup(

(17)

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING)

(18)

DAFTAR PUSTAKA

Abdul, K. 2012. Algoritma dan Pemrograman Menggunakan Java. Edisi 1.C.V Andi Offset: Yogyakarta.

Ana, E. & Asri, P. 2012. Implementasi Algoritma Pencocokan String pada Aplikasi Pengarsipan Berbasis Web, Jurnal Informatika. 3(2) : 3 – 4.

Ardianto, W., Rika, P.S., & Thio, W. Pembuatan Aplikasi Untuk Mendeteksi Kebenaran Perintah SQL Query Menggunakan Metode Knuth-Morris-Pratt (KMP), Jurnal Teknik Informatika. 1(1) : 2 – 4).

Audy. 2015. Komparasi Algoritma Quick Sort dan Bucket Sort Pada Pengurutan Data Integer. Jurnal Teknik Informatika. 7(1) : 9 – 10.

1 Dictionary of Algorithms and Data Structures. 2006. Software and Systems Division, Information Technology Laboratory, NIST : Gaithersburg

Fathoni, M., & Saniman . 2010. Konsep Sorting Dalam Pemrograman.

JurnalSAINTIKOM.7(1):6.

Fatta, H, A. 2007. Analisis dan Perancangan Sistem Informasi Untuk Keunggulan Bersaing Perusahaan dan Organisasi Modern. Edisi 1.C.V Andi Offset :Yogyakarta

Haviluddin. 2011. Memahami Penggunaan UML (Unified Modelling Language).

Jurnal Informatika Mulawarman. Vol 6 No 1( 1 Februari 2011).

Horowitz, E., & Sartaj, S. 1981. Fundamental of Data Structures. 1st Edition. W. H. Freeman & Co : New York.

(19)

Pankaj, S. 2013. Comparison of Sorting Algorithms (On the Basis of Average Case). International Journal of Advanced Research in Computer Science and Software Engineering. 3 (3): Hal. 522-532.

Sedgewick,R., & Wayne, K. 2011. Algorithms . 4th Edition. Pearson Education International: Boston.

Sismoro, H. 2005. Pengantar Logika Informatika, Algoritma dan Pemrograman Komputer. Edisi 1. C.V. Andi Offset : Yogyakarta

(20)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem

Sistem merupakan kumpulan elemen – elemen yang saling terkait dan bekerja sama untuk memproses masukan (input) yang ditujukan kepada sistem tersebut dan mengolah masukan tersebut sampai menghasilkan keluaran (output) yang diinginkan.. Analisis sistem adalah suatu kumpulan atau himpunan dari unsur atau variabel yang saling terorganisasi, saling berinteraksi dan saling bergantung satu sama lain. (Fatta 2007). Berikut adalah diagram ishikawa otomatisasi indek ebook alghoritms.

user membutuhkan Dapat memilih buku sistem dalam mencari dan apa saja yang berformat mensortir setia kata PDF

algoritma KMP dan Quicksort Belum adanya suatu sistem akan mencari dan menyortir yang dapat mencocokkan kata tersebut. Setiap kata yang dicari dan menyortir kata tersebut

Gambar 3.1 Diagram Ishikawa Untuk Analisis Masalah

Masalah utama yang diangkat dari penelitian ini adalah bagaimana membangun sebuah aplikasi yang dapat menyortir dan mengurutkan kata serta menghitung waktu pencarian algoritma berdasarkan huruf sampai dengan angka yang

HUMAN

ALGORITHMS

MATERIAL

MACHINE

(21)

diberikan oleh seorang user kepada sistem dengan menggunakan algoritma Knuth-Morris-Pratt dan algoritma Quicksort.

Aplikasi indeks ebook yang akan dibangun ini menggunakan algoritma Knuth-Morris-Pratt dan algoritma Quicksort dengan menggunakan software Netbeans yang memberikan kemudahan bagi seorang user dalam melakukan pencarian kata.

Analisis sistem diperlukan untuk mengetahui permasalahan dan kebutuhan yang diperlukan dalam pengembangan sistem. Analisis terdiri dari analisis permasalahan dan analisis kebutuhan sistem.

3.2. Analisis Permasalahan

Analisis sistem dibangun dengan tujuan untuk mengetahui permasalahan dan juga kebutuhan yang diperlukan dalam membuat sebuah sistem aplikasi ini. Aplikasi indeks ebook yang dibangun adalah sistem yang menyortir kata-perkata, huruf-perhuruf sampai dengan angka-angka, setelah melakukan penyortiran sistem juga akan menganalisis waktu pencarian algoritma tersebut dengan satuan waktu microsecond

sehingga nantinya kita akan dapat menyimpulkan apakah algoritma yang diangkat dalam penelitian kali ini adalah algoritma yang termasuk cepat ataukah lambat.

Dari analisis permasalahan tersebut, dibangunlah sebuah aplikasi yang mampu mencari kata dari user berserta waktu pencariannya kepada user. Di mana sistem ini nantinya dapat membantu seseorang mempermudah dalam melakukan pencarian kata dalam sebuah ebook yang berformat PDF. Aplikasi yang dibangun berbasis bahasa Java dengan menggunakan software Netbeans IDE. Sehingga siapapun dapat memakai aplikasi tersebut. Perancangan aplikasi yang dibangun, di rancang secara sederhana dan mudah dipahami, dan juga user memberikan sebuah petunjuk cara pemakaian aplikasi, sehingga user ataupun pengguna lainnya akan cepat mengerti menggunakan aplikasi tersebut, dan hasilnya akan sangat bermanfaat untuk seseorang dalam melakukan pekerjaannya.

(22)

Sebagai langkah awal dari proses analisis kebutuhan sistem ini, akan diuraikan kembali tujuan penelitian ini seperti bab sebelumnya yaitu untuk membuat sebuah aplikasi berbasis Bahasa Java dengan menggunakan algoritma Knuth-Morris-Pratt

dan algoritma Quicksort. Maka sistem ini akan menjadi suatu aplikasi yang sederhana untuk melakukan pencocokan dan penyortiran kata serta menghitung waktu pencariannya sehingga akan sangat mempermudah pembaca dalam melakukan pencarian keberadaan kata tersebut yang dinyatakan dalam indeks di dalam ebook

yang berformat PDF tersebut.

Untuk membangun sebuah sistem, perlu dilakukan sebuah tahap analisis kebutuhan sistem. Analisis kebutuhan sistem dapat dikelompokkan menjadi 2 bagian yaitu: kebutuhan fungsional dan kebutuhan nonfungsional.

3.3.1. Kebutuhan Fungsional

Kebutuhan fungsional adalah jenis kebutuhan yang berisi informasi dan proses apa saja yang harus dilakukan oleh sistem.

Kebutuhan fungsional yang pertama sistem yang akan dibangun harus mampu menerima inputan sebagai berikut :

1. User diminta untuk menginput username dan password pada form Login

sebelum masuk ke halaman menu.

2. User mengupload sebuah ebook yang berekstensi PDF yang dalam penelitian kali ini hanya mengambil buku “Algorithms” sebagai contoh yang ada di

frame Bacabuku.

3. User diminta untuk memasukkan kata yang ingin dicari keberadaannya di dalam ebook.

Kebutuhan fungsional yang kedua sistem yang akan dibangun harus mampu melakukan proses sebagai berikut:

(23)

2. Sistem harus mampu melakukan pencarian kata yang diinputkan oleh user

3. Sistem harus mampu menyortir huruf berdasarkan abjad dari yang terkecil sampai dengan yang terbesar.

Kebutuhan fungsional yang ketiga sistem yang akan dibangun harus mampu memberikan output sebagai berikut:

1. Sistem harus mampu memberikan hasil pencarian kata berupa keberadaan kata tersebut dalam ebook tersebut berserta waktu pencarian algoritmanya

2. Sistem harus mampu mengurutkan kata dari abjad yang terkecil sampai dengan yang terbesar, sehingga user mendapatkan informasi yang jelas dan tersusun secara rapi.

3.3.2 Kebutuhan Non-Fungsional

Analisis kebutuhan non fungsional dilakukan untuk mengetahui spesifikasi kebutuhan untuk sistem. Spesifikasi kebutuhan melibatkan analisis perangkat keras/hardware,analisis perangkat lunak/software,analisis pengguna/user. Namun dalam penelitian ini penulis tidak begitu banyak melibatkan komponen dari hardware,

karena yang dihasilkan hanyalah sebuah sistem sederhana yang dibangun melalui software Netbeans IDE dengan menggunakan bahasa java. Sistem ini lebih banyak melibatkan software dan user, maka dari itu kebutuhan non-fungsional dalam penelitian ini adalah untuk mendukung kebutuhan yang sudah ditentukan. Adapun kebutuhan non-fungsional yang menjadi pendukung sistem dapat dikelompokkan berdasarkan:

1. Performance

Sistem ini diharapkan mampu memberikan kemudahan dan mempersingkat waktu pencarian algoritma.

2. Information

Sistem ini diharapkan mampu memberikan informasi keberadaan kata dengan jelas dan dapat dengan mudah dimengerti oleh user.

(24)

Sistem ini hanya dapat digunakan oleh user sendiri, sehingga tidak dapat digunakan oleh pihak yang tidak berwenang.

4. Service

Sistem diharapkan untuk didesign sedemikian mudah yang berguna untuk dapat segera dimengerti cara penggunaannya oleh user.

5. Eficiency

Sistem yang dibangun bertujuan untuk mempermudah user dalam melakukan pencarian kata yang diinput oleh user. Dan apabila user sedang di dalam sebuah pekerjaan dan menggunakan sistem ini untuk menyelesaikan tugasnya, diharapkan mampu berkerja dengan cepat.

3.4. Perancangan Sistem

Penulis akan menguraikan tentang pemodelan sistem yang akan dirancang yang bertujuan untuk menggambarkan kondisi dan bagian-bagian yang berperan dalam sistem yang dirancang. Pemodelan sistem yang dilakukan adalah dengan membuat perancangan flowchart,use-case diagram, activity diagram dan sequence diagram.

(25)

Ya

Ya

Gambar 3.2. Flowchart Sistem Aplikasi

Keterangan :

Pada gambar 3.2 dijelaskan mengenai Menu utama aplikasi otomatisasi indeks ebook Algorithms dengan menggunakan algoritma Knuth-Morris-Pratt dan Quicksort. User

dapat masuk melalui halaman menu utama, namun terlebih dahulu user harus Login. Setelah userLogin dan masuk ke menu utama, user bisa langsung memilih buku untuk dibaca dan menguploadnya kedalam aplikasi ini, yang tentunya dalam penelitian kali ini kita memakai ebook Algorithms saja. Setelah diupload, akan ada sebuah button

(26)

satu kali pencarian. Hasil pencarian tersebut akan dimasukkan kedalam data, kemudian data tersebut akan disortir berdasarkan abjad dari yang terkecil sampai dengan yang terbesar dengan menggunakan algoritma Quicksort dan juga akan menampilkan waktu pencariannya dari keseluruhan kata yang ada didalam data, kemudian akan menampilkannya kedalam sebuat teks area yang telah disediakan oleh

user agar kita bisa mengetahui berapa lama waktu pencariannya.

3.4.2. Use-Case Diagram

Use-case diagram adalah diagram yang menggambarkan aktor, use case dan relasinya sebagai suatu urutan tindakan yang memberikan nilai terukur untuk aktor (Haviluddin : 2011). Sebuah use case digambarkan sebagai elips horizontal dalam suatu diagram UML use case. Use case memiliki dua istilah, yaitu:

1. Sistem use case; interaksi dengan sistem.

2. Business use case; interaksi bisnis dengan konsumen atau kejadian nyata

,Gambar 3.3 Use case Sistem Aplikasi

(27)

yang ingin di cari, sampai dengan waktu pencarian algoritmanya. Seperti pada tabel

UC-7 Pencarian kata dan hasil pencarian 1.1.1

1.1.2 3.4.3. Skenario Use case ID : SC-01 Nama Use case : Login

Deskripsi : Terlebih dahulu sebelum masuk ke dalam sisem aplikasi, user

diminta untuk mengisi nama dan password. Pre-kondisi :

Tabel 3.2. Scenario-01

Aktor/User Reaksi Sistem

Skenario Normal

1. Login

2. Menampilkan interface desktop untuk

Login

3. Isi nama dan password

4. Memeriksa nama dan password

5. Masuk ke halaman utama sistem aplikasi.

Skenario Alternatif

1. Login

2. Tidak dapat masuk ke halaman yang lain selain hanya di halaman menu.

ID : SC-02 Nama Use case : Form Menu

Deskripsi : Setelah user Login ke dalam sistem, user akan diarahkan langsung oleh sistem ke halaman menu. Form menu adalah form yang dapat menghubungkan ke seluruh form yang lain. Atau dengan kata lain form menu form adalah form utama dari sistem aplikasi ini.

(28)

Tabel 3.3. Scenario-02

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Form menu

2. Masuk ke halaman Tentang algoritma 3. Masuk ke halaman pencarian kata dan hasil pencarian.

4. Masuk ke halaman help Skenario Alternatif

1. Form Menu

2. Dapat masuk ke halaman apa saja

ID : SC-03

Nama Use case : Baca buku

Deskripsi : User diminta utuk mengupload file berformat PDF ke dalam sistem aplikasi dengan cara mengklik button upload file lalu pilih file kemudian klik file tersebut kemudian klik open. Pre-kondisi : User hanya diperbolehkan untuk menguploadfile berformat

PDF saja.

Tabel 3.4. Scenario-03

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Baca buku

2. Uploadfile berformat PDF

3. Menampilkan file PDF ke dalam sistem

4. klik cari kata untuk mencari kata tersebut dan berapa lama waktu pencariannya.

Skenario Alternatif

1. Baca buku

2. Tidak bisa menampilkan file yang berformat lain selain file PDF.

ID : SC-04

Nama Use case : Help

Deskripsi : Di dalam form ini, user akan diberitahu langkah-langkah ataupun panduan dalam menggunakan sistem aplikasi.

Pre-kondisi :

Tabel 3.5. Scenario-04

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Help

(29)

3. Menampilkan panduan cara mencari kata

Skenario Alternatif

1. Help

2. Tidak dapat menampilkan sekaligus cara menguploadfile dan pencarian kata.

ID : SC-05

Nama Use case : Tentang algoritma

Deskripsi : User akan diberitahu algoritma apa yang digunakan oleh sistem aplikasi ini.

Pre-kondisi : Tidak dapat menampilkan informasi dari kedua algoritma dalam sekali klik.

Tabel 3.6. Scenario-05

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Tentang algoritma

2. Menampilkan pengertian algoritma KMP 3. Menampilkan pengertian algoritma

Quicksort Skenario Alternatif

1. Tentang algoritma

2. Menampilkan sesuai algoritma apa yang di klik, tidak dapat di lakukan hanya dalam sekali klik.

ID : SC-06

Nama Use case : Profile

Deskripsi : Disini user akan menampilkan biodata dari penulis. Pre-kondisi :

Tabel 3.7. Scenario-06

Aksi Aktor Reaksi Sistem

Skenario Normal

(30)

Deskripsi : User akan memperoleh hasil dari kata yang ingin dicari baik itu dengan menggunakan algoritma KMP yang melakukan pencarian berdasarkan kata yang diinputkan maupun Quicksort

yang berkerja untuk mengurutkan indeks dari huruf-huruf maupun angka terkecil sampai dengan yang terbesar.

Pre-kondisi :User belum mengetahui apakah algoritma ini cepat atau lambat.

Tabel 3.8. Scenario-07

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Help

2. Menampilkan panduan menguploadfile

3. Menampilkan panduan cara mencari kata

Skenario Alternatif

1. Help

2. Tidak dapat menampilkan sekaligus cara menguploadfile dan pencarian kata.

3.4.4. Activity Diagra m

(31)

Gambar 3.4 Activity Diagram Sistem Aplikasi

Activity diagram pada gambar 3.4 berfungsi sebagai langkah dan proses suatu program aplikasi otomatisasi indeks ebook algorithms dari mulai login kemudian proses pengurutan dan penyortiran kata sampai dengan hasil pencarian algoritma tersebut.

3.4.5. Sequence Diagram

(32)

Gambar 3.5 Sequence Sistem Aplikasi

3.5. Analisis Proses

Dalam melakukan pencarian kata, sistem aplikasi ini menggunakan 2 kali tahap penyortiran, yang pertama mencocokkan kata yang diinputkan dengan kata yang ada di dalam teks dengan menggunakan algoritma Knuth-Morris-Pratt, kemudian semua kata yang diinputkan oleh user diurutkan kembali berdasarkan angka atau huruf yang terkecil sampai dengan yang terbesar dengan menggunakan algoritma Quicksort.

Untuk mengetahui bagaimana algoritma ini bekerja dalam sistem aplikasi ini, kita jelaskan dalam perincian analisis proses.

3.5.1. Analisis proses algoritma Knuth-Morris-Pratt

Tahap-tahap yang akan dilakukan oleh algoritma Knuth-Morris-Pratt adalah sebagai berikut:

1. Kata yang diinputkan oleh user disebut dengan pattern.

(33)

3. Kemudian mulai mencocokkan huruf perhuruf dengan teks, apabila huruf di indeks pertama sama dengan huruf yang ada di dalam teks, algoritma akan bergeser ke indeks berikutnya, kemudian mencocokkan dengan huruf yang ada di teks, begitu seterusnya algoritma ini mencocokkan indeks sepanjang kata ataupun kalimat yang diinputkan oleh user.

4. Apabila semua kata yang diinputkan user sama dengan bagian teks yang ada di

ebook Algorithms, maka sistem akan menginformasikan keberadaan kata ataupun kalimat tersebut.

5. Apabila tidak sama, maka sistem akan mencari lagi sampai di akhir teks.

3.5.2. Analisis proses algoritma Quicksort

Setelah semua kata yang diinputkan oleh user sudah selesai, maka sistem akan melakukan proses penyortiran kata-kata tersebut, berikut adalah langkah-langkahnya :

1. Semua kata yang diinputkan oleh user disimpan kedalam sebuah database, yang nantinya akan disortir kembali dengan algoritma Quicksort.

2. Semua kata tersebut akan diurutkan, mulai dari angka yang terkecil atau huruf yang terkecil sampai dengan angka atau huruf yang terbesar.

3. Dalam penyortiran huruf, apabila terdapat lebih dari satu huruf yang sama, maka huruf yang berada diindeks yang ke-2 akan disortir kembali dan mencari di mana huruf yang terkecilnya, begitu seterusnya sampai dengan selesai. 4. Kemudian sistem akan menginformasikan waktu pencarian algoritmanya,

mulai dari penyortiran tahap awal sampai dengan akhir dalam satuan waktu

microsecond.

3.6. Perancangan Antarmuka Sistem (Interface)

(34)

3.6.1.Halaman Login

Rancangan halaman utama adalah rancangan tampilan awal pertama kali ketika sistem

aplikasi dijalankan. Rancangan tampilan awal ini adalah form Login,yang di mana form Login hanya terdiri dari 3 label, 2 diantaranya bernama username dan password dan yang satunya lagi digunakan untuk menampung file gambar, 2 text area dan 2

button Login dan cancel. Tujuan dibangunnya form Login sebagai menghindari penyalahgunaan untuk orang yang tidak berwenang yang dalam penelitian ini hanya admin sendiri yang diperbolehkan untuk masuk. Berikut tampilan pada gambar 3.6:

Gambar 3.6 Rancangan Login

Keterangan dari rancangan halaman utama dapat dilihat pada tabel 3.9 :

Tabel 3.9. Keterangan Bagian-Bagian Rancangan Halaman Utama

NO. Jenis Objek Keterangan

1 Label Gambar Foto user/admin

2 Label username Sebagai tanda untuk memberitahukan bahwa text area yang berada disampingnya menandakan

username dari user

3 Label Password Sebagai tanda untuk memberitahukan bahwa text area yang berada disampingnya menandakan password dari user

4 Text Area Untuk tempat mengisikan username

2 3 1

(35)

Username

5 Password Field Untuk mengisikan password dari username

6 Button Login Apabila sudah benar username dan password maka

sistem akan mengarahkan user ke menu. 7 Button Cancel Untuk keluar dari sistem aplikasi

3.6.2.Rancangan Menu

Rancangan halaman menu merupakan tahap awal pada penggunaan aplikasi ini

Gambar 3.7 Rancangan Halaman Menu

Pada gambar 3.7 merupakan rancangan halaman menu yang di mana dari halaman ini dapat menghubungkan ke sistem aplikasi penyortiran kata. Keterangan dari rancangan

menu dapat dilihat pada tabel 3.10 :

Tabel 3.10. Keterangan Bagian-Bagian Rancangan Halaman Menu

NO. Jenis Objek Keterangan

1 JMenu Menu Merupakan form dari menu itu sendiri dan juga form tentang algoritma yang menjelaskan tentang algoritma yang berkerja pada sistem aplikasi.

(36)

mengupload ebook berformat pdf dan juga memperbolehkan user untuk melakukan pencarian kata dan waktu pencarian.

3. JMenu Help Memberikan panduan kepada user cara menggunakan aplikasi

4. JMenu Log out Untuk keluar dari system

6 Button Baca buku Button ini akan mengarahkan user ke form baca buku dan meminta user untuk menguploadfile

untuk di baca 7 Button Hasil

Pencarian

Button ini akan mengarahkan anda ke form pencarian kata dan waktu pencarian yang ada di JMenu baca buku

8 Button Tentang Algoritma

Button ini akan mengarahkan anda ke form tentang algoritma yang menjelaskan tentang pengertian dan fungsi dari algoritma Knuth-Morris-Pratt dan algoritma Quicksort yang ada di dalam JMenu menu.

9 Button Log out Button ini berfungsi untuk keluar dari aplikasi. 10 Label gambar Sebuah label yang berfungsi untuk menampung

sebuah gambar yang bertujuan untuk menghias form.

3.6.3.Rancangan Halaman Baca Buku

Rancangan halaman baca buku ialah rancangan halaman yang berisi tentang ebook

(37)

Gambar 3.8 Rancangan Halaman Baca Buku

Pada gambar 3.8 terlihat rancangan halaman baca buku yang di mana user diberikan kebebasan dalam melakukan upload buku apa saja yang berformat PDF. Keterangan dari rancangan baca buku dapat dilihat pada tabel 3.11 :

Tabel 3.11. Keterangan Bagian-Bagian Rancangan Halaman Baca buku

NO. Jenis Objek Keterangan

1 Teks area Lokasi ebook untuk ebook ketika dimasukkan kedalam form aplikasi

2 Button Upload File

Meminta user untuk menguploadfile pdf 3 Button Cari

kata

Mengarahkan user ke form pencarian kata untuk mendapatkan informasi hasil pencarian dan waktunya. 4 Button

Kembali ke

menu

Untuk mengembalikan ke form menu

3.6.4.Rancangan Halaman Pencarian Kata

(38)

Gambar 3.9 Rancangan Halaman Pencariankata

Pada gambar 3.9 terlihat rancangan halaman pencarian kata untuk melakukan pencarian kata. Keterangan dari rancangan halaman pencarian kata dapat dilihat pada tabel 3.12:

Tabel 3.12. Keterangan Rancangan Halaman Pencarian Kata

NO. Jenis Objek Keterangan

1 Teks area Meminta kepada user untuk memasukkan kata yang ingin dicari.

2 Teks area Untuk melihat hasil pencarian kata yang di mana merupakan informasi keberadaan kata tersebut.

3 Button cari kata

Merupakan sebuah button untuk memulai program pencarian kata yang diinputkan oleh user.

4 Button Sortir kata

Merupakan sebuah button untuk menyortir semua hasil dari lokasi pencarian kata, kemudian mengurutkannya berdasarkan urutan yang terendah sampai dengan yang tertinggi.

5 Teks area Hasil dari waktu pencarian algoritma KMP.

6 Teks area Hasil dari waktu penyortiran kata algoritma Quicksort.

7 Button

Kembali

Merupakan sebuah button yang akan mengarahkan user

(39)

Membaca 8 Button

Kembali ke

menu

Merupakan sebuah button untuk mengarahkan user

kembali ke menu awal. menampilkan hasil penyortiran kata-kata yang diinputkan. menampilkan semua kata yang telah diinputkan oleh

user yang memiliki nilai hasil pencarian algoritma KMP

berupa posisi dari kata tersebut yang dinyatakan di dalam indeks.

11 Button untuk memanggil

database

Merupakan sebuah button yang berfungsi untuk memanggil seluruh isi data dalam field “kata” dan

menampilkannya ke dalam teks area.

3.6.5.Rancangan Halaman Help

(40)

Gambar 3.10 Rancangan Halaman Help

Pada gambar 3.10 terlihat rancangan halaman cek gejala untuk memberikan petunjuk membuka file sampai dengan melakukan penyortiran dan pencarian kata. Keterangan dari rancangan help dapat dilihat pada tabel 3.13:

Tabel 3.13. Keterangan Rancangan Halaman Help

NO. Jenis Objek Keterangan

1 Button cara untuk memasukkan file PDF

Button ini akan menjelaskan kepada user

bagaimana cara untuk memasukkan file PDF ke dalam sistem aplikasi.

2 Button pencarian kata Button ini berfungsi untuk menjelaskan kepada

user bagaimana sistem melakukan pencarian dan penyortiran kata beserta menginformasikan kepada user hasil pencarian dan waktu pencariannya.

3 Teks area Teks ini sebagai keterang dari button nomor 1 dan 2.

4 Button kembali ke

menu.

Mengembalikan user ke halaman menu.

(41)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

4.1.Implementasi

Tahap implementasi adalah tahap yang dimana sistem telah digunakan oleh pengguna. Namun sebelum itu pengguna wajib telah mengetahui cara menggunakannya, dan sistem haruslah melalui tahap pengujian yang bertujuan untuk menjamin tidak adanya kesalahan ketika pengguna menggunakan sistemnya. (Fatta, H.A 2007)

Sistem aplikasi otomatisasi indeks ebook algorithms ini dibangun dengan menggunakan Bahasa pemrograman java, yang dimana dalam melakukan perancangan dan listing pemrogramannya menggunakan software Netbeans IDE

dengan interface running programnya berbasis desktop. Sistem aplikasi otomatisasi indeks ebookAlgorithms ini dibangun dengan menggunakan algoritma Knuth-Morris-Pratt yang berfugsi untuk mencari kata yang diinputkan oleh user kemudian akan disamakan dengan yang ada di dalam teks, kemudian menyortir kata kata yang diinputkan tersebut berdasarkan abjad yang terkecil sampai dengan yang terbesar dengan menggunakan algoritma Quicksort, dan tentunya sistem akan menghitung waktu pencariannya dalam satuan waktu microsecond.

4.1.1 Tampilan Halaman Utama

Tampilan halaman yang utama adalah tampilan awal yang pertama kali muncul ketika program dirunningkan atau dijalankan. Tampilan halaman utama adalah tampilan form

(42)

Gambar 4.1. Tampilan Halaman Utama

4.1.2. Tampilan Halaman Menu

Halaman menu merupakan halaman yang dapat menghubungkan ke semua halaman

form sistem aplikasi. Dan juga dari tampilan halaman menu disediakan menutab tambahan yaitu form tentang informasi algoritma yaitu form yang akan menjelaskan algoritma apa yang digunakan dan profile dari penulis. Berikut tampilan halaman menu dapat dilihat pada gambar 4.2.

(43)

4.1.3. Tampilan Halaman Baca buku

Pada halaman baca buku ini disediakan 2 menutab, yaitu Pilih Buku yang merupakan

form yang meminta user untuk mengupload file berupa PDF ke dalam sistem dan form Cari Kata yang merupakan form yang akan mencari kata apa saja yang diinputkan oleh user di dalam ebook Alghoritms. Berikut adalah tampilan pilih buku sebelum file PDF diupload pada Gambar 4.3.

Gambar 4.3. Tampilan Halaman Pilih File Sebelum Upload File

.

Kemudian halaman pilih file seteleh file dipilih kemudian diupload, dapat dilihat pada Gambar 4.4

(44)

Kemudian adalah menutab cari kata yang merupakan halaman tempat kerjanya algoritma Knuth-Morris-Pratt dan algoritma Quicksort. Pada halaman ini sistem meminta kepada user untuk mengetikkan kata yang ingin dicari kemudian mengklik tombol cari, kemudian sistem akan mencari kata tersebut dengan menggunakan algoritma Knuth-Morris-Pratt berserta waktu pencariannya, kemudian hasilnya akan ditampilkan di teks box yang ada di bawahnya, kemudian klik tombol sortir kata, maka algoritma Quicksort akan menjalankan tugasnya yaitu menyortir kata tersebut dan kemudian menampilkan hasil dan waktu pencariannya. Berikut adalah tampilan awal menutab Cari Kata sebelum menampilkan hasil dari pencariannya. Tampilan dapat dilihat pada Gambar 4.5.

Gambar 4.5 Tampilan Halaman Sebelum Melakukan Proses Pencarian Kata

4.1.4. Tampilan Halaman Hasil

Halaman hasil adalah halaman dari sistem otomatisasi indeks ebook algorithms

dengan menggunakan algoritma Knuth-Morris-Pratt dan Quicksort, dan dihalaman ini

(45)

Gambar 4.6. Tampilan Halaman Hasil

4.1.5. Tampilan Halaman Help

Berikut adalah halaman help yang merupakan halaman yang memandu user dalam memakai ataupun menggunakan sistem aplikasi dari awal penggunakan sampai dengan selesai. Berikut adalah tampilan halaman help dapat dilihat pada Gambar 4.7.

(46)

4.2. Pengujian

Pengujian sistem merupakan tahap akhir dalam perancangan dan juga pengembangan dari sebuah sistem aplikasi, dan merupakan sebuah proses yang paling banyak memakan waktu proses analisa pengembangan sampai dengan matang. Pemahaman konsep pengujian ini sangatlah penting dimulai dari bagaimana algoritma mencari, seperti apa karakteristiknya, memahami perbedan dari setiap kondisi, pengujian dari sistem, kemudian memperhatikan dan menganalisa teknik prosedur dan juga tool yang di gunakan dalam perancangan dan pengembangan aplikasi ini. Hal ini tentu saja sangat membantu pengguna menyadari setiap masalah yang akan diberikan kepada

user dari penguji sistem serta sangat dibutuhkannya pengujian sistem. (Fatta, H.A 2007)

Tahap pengujian sistem dilakukan untuk menguji hasil dari pencarian algoritma KMP dan Quicksort yang dihitung berdasarkan satuan waktu microsecond.

4.2.1. Pengujian Sistem Algoritma Knuth-Morris-Pratt

Tahap pengujian sistem ini merupakan sebuah lanjutan dari sebuah tahap penginputan data yang diinputkan oleh user, yang dimana setiap kata yang diinputkan oleh user

yang memiliki hasil berupa indeks akan disimpan kedalam database, kemudian waktu dari pencarian algoritma ini juga akan dihitung dari berapa banyak aplikasi yang terbuka, kemudian banyaknya setiap huruf di dalam suatu kalimat yang diinputkan, yang bertujuan untuk melihat apakah waktunya semakin lebih cepat atau lebih lambat.

Pertama-tama di dalam database, tidak ada satupun kata yang terdapat dalam

(47)

Gambar 4.8 Isi Dalam Database Sebelum Dilakukannya Proses

Penginputan

Jika seorang user menginput sebuah kata sebagai berikut:

Gambar 4.9 Input Data Sebelum Proses

(48)

Gambar 4.10 Proses Pencocokan Kata Dengan Beberapa Aplikasi Terbuka

Kemudian kita mencoba untuk menginputkan kata yang sama, hanya saja beberapa aplikasi kita hilangkan. Maka waktu yang dibutuhkan algoritma ini dalam melakukan pencocokan string adalah seperti gambar berikut :

Gambar 4.11 Proses Pencocokan Kata Dengan Beberapa Aplikasi Tertutup

(49)

dibutuhkan algoritma ini sebesar 19700569, sedangkan ketika beberapa aplikasi terbuka waktu pencariannya menjadi lebih lambat. Berikut perhitungan selisih waktu : Waktu and (1) = 37872755 microsecond

Waktu and (2) = 19700569 microsecond

Selisih waktunya = 18172186 microsecond

Kemudian kita akan membandingkan waktu pencarian algoritma berdasarkan jumlah huruf yang terdapat dalam sebuah kalimat. Dalam percobaan ini kalimat pertama yang kita ambil adalah dari kalimat sebelumnya, kemudian kita bandingkan dengan jumlah huruf yang lebih banyak. Maka hasilnya adalah seperti gambar berikut:

Gambar 4.12 Proses Pencocokan Kata Dengan Jumlah Huruf Lebih Banyak

Pada gambar 4.12 diatas terlihat jelas bahwa waktu yang dibutuhkan algoritma ini dalam melakukan pencocokan kata “where” yang berjumlah 5 huruf adalah sebesar 9976034, lebih cepat dari pencarian kata yang dilakukan hanya dari 3 huruf dari percobaan yang dilakukan sebelumnya. Selisih waktu dari pencocokan string yang dilakukan oleh algoritma ini adalah sebagai berikut :

Waktu pencarian kata “and” = 19700569 microsecond

Waktu pencarian kata “where” = 9976034 microsecond

Selisih waktunya adalah = 9724535 microsecond

(50)

string maka waktu yang dibutuhkan akan semakin lama, sedangkan semakin banyak kata di dalam sebuah kalimat maka waktu pencarian stringnya akan semakin lebih cepat.

4.2.2. Pengujian Sistem Algoritma Quicksort

Tahap pengujian sistem ini adalah sebuah tahap paling akhir dari sistem aplikasi otomtisasi indeks ebook ini. Tahap ini adalah tahap yang akan menyortir kata mulai dari huruf yang paling kecil sampai dengan huruf yang paling besar. Semua kata yang ada di dalam database akan ditampilkan kembali ke dalam sistem kemudian disortir dengan algoritma Quicksort. Tidak hanya tersortir di dalam aplikasi saja, akan tetapi

field di dalam database akan ikut tersortir juga. Berikut adalah isi database melalui kata yang telah diinputkan melalui percobaan sebelumnya :

Gambar 4.13 Kata Yang Sudah Tersimpan di Dalam Database

(51)

Gambar 4.14 Kata Di dalam Database Yang Ditampilkan Di dalam Aplikasi

Kemudian kata yang ditampilkan tersebut disortir berdasarkan algoritma Quicksort. Seperti pada gambar 4.15 :

Gambar 4.15 Kata Di dalam Database Yang Telah Tersortir

Hasil yang didapatkan ketika kata telah tersortir memerlukan waktu sebesar 109621

microsecond. Kata yang tersortir tidak hanya di dalam aplikasi saja, akan tetapi kata yang terdapat di dalam database akan tersortir juga. Seperti gambar di bawah :

(52)

Penyortiran kata yang dilakukan oleh algoritma Quicksort adalah tidak langsung menyortir huruf yang terkecil sampai dengan yang terbesar tetapi melainkan dengan cara mengambil nilai dari setiap huruf yang di inputkan oleh user. Berikut adalah tabel huruf dalam kode ASCII :

(53)

BAB 5

KESIMPULAN DAN SARAN

5.1. Kesimpulan

Kesimpulan yang mungkin dapat kita ambil dari sistem apikasi otomatisasi indeks ebook Algorithms ini adalah sebagai berikut:

1. Sistem aplikasi ini akan sangat memberikan kemudahan bagi user ataupun pembaca dalam melakukan pencarian kata di dalam buku apa saja yang berformat pdf, disamping mempersingkat waktu juga meringankan beban bagi seorang yang berkerja yang berhubungan dengan fungsi dari sistem aplikasi ini.

2. Algoritma Knuth-Morris-Pratt dan algoritma Quicksort dalam melakukan pencarian kata berkerja dengan sangat baik dan cepat, hal ini telah dibuktikan dalam pengukuran waktu yang kita lakukan melalui aplikasi dalam satuan waktu microsecond.

3. Proses pencarian algoritma KMP memberikan waktu yang lebih cepat ketika kata yang diinputkan lebih banyak, semakin banyak kata yang diinputkan maka semakin cepat proses pencariannya.

4. Algoritma KMP akan berkerja semakin lama apabila saat menjalankan sistem ini banyak aplikasi yang berjalan. Gambar tidak dapat terbaca melalui sistem aplikasi, sehingga gambar tidak akan diproses oleh sistem.

5. Informasi yang diperoleh terlihat jelas dan tersusun secara rapi melalui sistem.

5.2. Saran

Saran yang dapat diberikan oleh penulis setelah penelitian ini dilakukan adalah : 1. Sistem yang dirancang oleh peneliti seharusnya bisa digunakan untuk semua

tipe file, bukan hanya sekedar file pdf saja.

2. Diharapkan mampu untuk menampilkan gambar yang ada di dalam ebook

(54)

3. Dapat memberikan masukan kata seperti halnya yang dilakukan oleh google. 4. Dapat dikembangkan lebih luas lagi yang bukan hanya sekedar melalui PC, bahkan juga bisa melalui smartphone seperti windowsphone, android, blackberry maupun iphone.

5. Menambahkan bebera fungsi yang dapat dikoneksikan dengan internet.

DAFTAR RIWAYAT HIDUP

Nama : Muhammad TP Fazil

Alamat : Jln. Sakti Lubis No 104 Medan Maimun Tanggal Lahir : Tanjungbalai 07 april 1992

Jenis Kelamin : Laki-laki No Handphone : 082166593576

Email : oncyfazil@gmail.com

Pendidikan Formal

2014 – 2016 : S1 Ilmu Komputer Universitas Sumatera Utara 2011 – 2014 : DIII Teknik Informatika Universitas Sumatera Utara 2007 – 2010 : SMA Negeri 1 Tanjungbalai

2004 – 2007 : SMP Negeri 1 Tanjungbalai 1998 – 2004 : SD N 132406(5) Tanjungbalai

Keahlian

(55)

BAB 2

LANDASAN TEORI

2.1 Desain Analisis Algoritma

Kovelamudi (2013) menyatakan algoritma dapat di definisikan sebagai prosedur komputasi yang mengambil beberapa nilai atau set nilai-nilai sebagai output. Ini adalah tahap-tahap komputasi yang akan mengubah input menjadi output. Dan merupakan alat untuk untuk memecahkan berbagai permasalahan di dalam komputer. Algoritma harus memiliki kriteria sebagai berikut :

Input : nilai 0 atau lebih disisipkan.

Output : setidaknya akan menghasilkan satu kuantitas. Kepastian : setiap instruksi jelas dan tidak ambigu.

Finiteness :Jika kita menelusuri petunjuk dari sebuah algoritma, maka untuk semua kasus, algoritma akan berhenti setelah memasuki langkah

terakhir.

Efektivitas : Setiap instruksi harus dimulai dari awal sehingga dapat diproses. Sebuah program adalah ekspresi dari algoritma dalam bahasa pemrograman. Kumpulan dari instruksi, yang mana komputer akan mengikuti instruksi untuk memecahkan sebuah masalah.

Sekali sebuah algoritma diberikan kepada sebuah permasalahan dan dijamin akan memberikan hasil yang diharapkan, maka langkah penting selanjutnya adalah menentukan besar biaya yang diperlukan algoritma tersebut untuk memperoleh hasil itu. Proses inilah yang disebut dengan analisis algoritma (Weiss.M.A, 1996). Maksud dilakukannya analisis algoritma (Horowitz & Sahni, 1978) adalah untuk:

1. Memenuhi aktivitas intelektual.

2. Meramalkan suatu hal yang akan terjadi atau yang akan didapat dari algoritma tersebut.

(56)

Jenis-jenis algoritma terdapat beragam klasifikasi algoritma dan setiap klasifikasi mempunyai alasan tersendiri. Salah satu cara untuk melakukan klasifikasi jenis-jenis algoritma adalah dengan memperhatikan paradigma dan metode yang digunakan untuk mendesain algoritma tersebut. Beberapa paradigma yang digunakan dalam menyusun suatu algoritma akan dipaparkan dibagian ini. Masing-masing paradigma dapat digunakan dalam banyak algoritma yang berbeda (Kovelamudi, 2013).

2.2.1 Divide and Conquer

Kovelamudi (2013) paradigma untuk membagi suatu permasalahan besar menjadi permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk dipecahkan. Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah besar dan kemudian memecahkan permasalahan-permasalahan kecil yang terbentuk.

2.2.2 Dynamic Programming

Kovelamudi (2013) paradigma pemrograman dinamik akan sesuai jika digunakan pada suatu masalah yang mengandung sub-struktur yang optimal dan mengandung beberapa bagian permasalahan yang tumpang tindih. Paradigma ini sekilas terlihat mirip dengan paradigma Divide and Conquer, sama-sama mencoba untuk membagi permasalahan menjadi sub permasalahan yang lebih kecil, tapi secara intrinsik ada perbedaan dari karakter permasalahan yang dihadapi

2.2.3 Greedy Algorithm

Kovelamudi (2013) sebuah algoritma serakah mirip dengan sebuah pemrograman dinamik, bedanya jawaban dari submasalah tidak perlu diketahui dalam setiap tahap; dan

menggunakan pilihan “serakah” apa yang dilihat terbaik pada saat itu. Adapun jenis

(57)

1. Bahasa Semu (pseudocode).

Yaitu dengan menggunakan bahasa sehari-hari, tetapi harus jelas dan struktur. 2. DiagramAlir/Alur (Flowchart).

Yaitu dengan membuat suatu penulisan atau penyajian algoritma berupa diagram yang menggambarkan susunan alur logika dari suatu permasalahan.

2.3 Algoritma Quicksort

Quicksort adalah algoritma pengurutan yang dikembangkan oleh Tony Hoare. Algoritma

Quicksort melakukan perbandingan sebayak n log n untuk mengurutkan data sebanyak n. kondisi paling buruk dari jumlah perbandingan adalah n2. Secara praktis, Quicksort

beroperasi lebih cepat dibanding algoritma dengan kompleksitas n logn n lainnya. Sareen (2013) menyatakan bahwa keuntungan dari penggunaan algoritma Quicksort

adalah cepat dan efisien, sedangkan kerugian yang dapat dialami adalah menghasilkan performa yang buruk apabila data sudah terurut. Berikut adalah sarat dalam melakukan pengurutan ataupun penyortiran algoritma Quicksort;

1. Semua elemen yang ada disebelah kiri pivot harus lebih kecil atau sama dengan pivot, dan semua elemen disebelah kanan pivot harus lebih besar atau sama dengan pivot.

2. Pivot yang sudah diurutkan disusun berdasarkan urutan dari array/list. 3. Conquer yaitu disusun menjadi 2 sub array secara rekursif.

4. Kemudian digabungkan.

5. Permasalahannya yaitu sorting kunci n pada yang bukan urutan penurunan 6. Inputkan bilangan integer n positive, array dari kunci m yang sudah

diindekskan dari pertama hingga data ke-n.

7. Output, array m yang berisi kunci yang tidak menurun 8. Quicksort(rendah, tinggi)

1. Tinggi> rendah

2. kemudian partisi (rendah, tinggi, pivotIndex) 3. Quicksort (rendah, pivotIndex -1)

(58)

2. k=low

3. for j = low +1 tinggi

4. lakukan if S [ j ] < pivot item 5. Kemudian k = k + 1

6. Ganti S [ j ] dan m [ k ] 7. pivot = k

8. Ganti S[low] dan S[pivot]

Quicksort adalah algoritma sorting acak berdasarkan paradigma Divide and Conquer

Divide: memilih elemen acak dari x (pivot) dan partisi m ke dalam L elements lebih kecil dari x

E elements sama dengan x G elements lebih besar dari x Recursive: sorting L dan G Conquer: gabungkan L, E dan G

2.3.1 Metode Rekursif dalam Algoritma Quicksort

Quicksort dengan pendekatan rekursif tidak membutuhkan struktur data khusus, seperti

stack, karena setiap kelompok akan berjalan secara rekursif. Robert Sedgewick & Kevin Wayne (2011) menyatakan bahwa terdapat dua bagian pada pendekatan rekursif, yaitu

sort dan partisi. Partisi merupakan bagian yang melakukan tugas untuk mengelompokkan data, sedangkan sort adalah bagian yang melakukan proses rekursif. Semakin besar jumlah data, maka kompleksitas ruang suatu algoritma rekursif akan semakin besar.

(59)

kelompok sehingga kelompok lainnya menjadi kosong. Hal ini akan menyebabkan terjadinya banyak pengulangan pada saat pengurutan data. Nilai pivot pada kasus ini biasanya adalah nilai maksimum atau minimum dari kelompok data yang ingin diurutkan. Kompleksitas dari kasus terburuk ini adalah ½ n2. Kondisi yang ketiga adalah

kasus rata-rata, yaitu ketika pivot tidak terpilih secara acak dari data. Kompleksitas dari kasus rata-rata sama dengan kasus terbaik adalah 1.39 n log n.

2.3.2 Implementasi Quicksort

Implementasi Quicksort ( Abdul. K, 2012.) Algoritma:

Subrutin Quicksort(L,p,r) Jika p < r MAKA

q partisi (L,p,r)

Quicksort(L,p,q)

Quicksort(L,q+1,r) Akhir-jika

Akhir – subrutin

Untuk mengurutkan isi keseluruhan Larik L, diperlukan pemanggilan seperti berikut:

Quicksort(L,O, jumlah-elemen(L)-1) Subrutin partisi sendiri seperti berikut:

Subrutin partisi(L,p,r) x L[p] i p j r

Ulang selama benar

Ulang selama L[j] > x j j -1

Akhir-ulang Ulang selama L[j] < x i i – 1

(60)

tmp L[i] L[i] L[j] L[j] tmp Sebaliknya

Nilai – balik J Akhir-jika Akhir – ulang Akhir - subrutin

(61)

0 1 2 3 4 5 6 7

Pivot L[0]yaitu 6

i j

Setelah i digerakkan ke kanan sampai L[i] >= 6

i j dan setelah j digerakkan

ke kiri sampai L[j]<=6

Setelah penukaran L[i] dan L[j] dilaksanakan

i j

Setelah i digerakkan ke kanan sampai L[i] >=6 i j Ke kiri sampai L[j]<=6

Setelah penukaran L[i] dan L[j] dilaksanakan i j

Setelah i digerakkan ke kanan sampai L[i] >= 6 j i dan setelah j digerakkan

Ke kiri sampai L[j]<=6 Karena i<j tidak berlaku lagi,maka nilai balik berupa j

0 1 2 3 4 5 6 7

7 6 8

L[0..4] L[5..7]

Gambar 2.1 Keadaan setelah pivot didapatkan

6 2 4 3 7 5 4 8

6 2 4 3 7 5 4 8

4 2 4 3 7 5 6 8

4 2 4 3 7 5 6 8

4 2 4 3 5 7 6 8

4 2 4 3 5 7 6 8

(62)

2.3.3 Kasus terburuk Running Time Quicksort

Kovelamudi (2013) kasus terburuk untuk Quicksort dapat terjadi ketika pivot adalah elemen terkecil atau terbesar. Salah satu dari objek L dan G memiliki ukuran n-1 dan yang lain memiliki ukuran 0. Running timenya berdasarkan data yang sudah ada, kemudian dijumlahkan n + (n - 1) + … + 2 + 1, dengan demikian, kasus terburuk running time pada Quicksort adalah O(n2). Berikut tabel running time Quicksort :

Tabel 2.1 Running Time Quicksort

Panjang Waktu

0 N

1 n-1

.. ..

n-1 1

2.3.4 Analisis kasus terburuk Running Time pada Quicksort

Kovelamudi (2013) pivot adalah yang terkecil (ataupun terbesar) dari element T (N) = T (N-1) + cN, N > 1

Telescoping:

T (N-1) = T (N-2) + c (N-1) T (N-2) = T (N-3) + c (N-2) T (N-3) = T (N-4) + c (N-3)

…………...

T (2) = T (1) + c.2

T (N) + T (N-1) + T (N-2) + … + T (2) = = T (N-1) + T (N-2) + … + T (2) + T (1) + C (N) + c (N-1) + c (N-2) + … + c.2

T (N) = T (1) + c times (the sum of 2 thru N) = T (1) + c (N (N+1) / 2 -1) = O (N2)

(63)

Pivot adalah nilai tengah dari array, bagian dari sisi kiri dan kanan memiliki ukuran yang sama. Partisi dari Log N, untuk memperoleh setiap partisi kita harus melakukan perbandingan (dan bukan hanya swap dari N/2 ). Karena itu kompleksitas dari algoritma ini adalah O (N log N).

2.3.5 Kasus terbaik analisis Running Time

T (N) = T (i) + T (N - i -1) + cN

Kovelamudi (2013) waktu untuk menyortir file sama dengan waktu untuk menyortir partisi yang disebelah kiri dengan element i, ditambah dengan waktu untuk menyortir sebelah kanan dengan elemen N-i-1, ditambah dengan waktu untuk membangun partisi.

Kita ambil pivot dari tengah T (N) = 2 T (N/2) + cN

Bagi dengan N: T (N) / N = T (N/2) / (N/2) + c Telescoping:

T (N) / N = T (N/2) / (N/2) + c T (N/2) / (N/2) = T (N/4) / (N/4) + c T (N/4) / (N/4) = T (N/8) / (N/8) + c

……

T (2) / 2 = T (1) / (1) + c Ambil semua persamaan :

T (N) / N + T (N/2) / (N/2) + T (N/4) / (N/4) + …. + T (2) / 2 = = (N/2) / (N/2) + T (N/4) / (N/4) + … + T (1) / (1) + c.logN

Setelah penukaran nilai yang sama: T (N)/N = T (1) + c * LogN

T (N) = N + N * c * LogN = O (NlogN)

2.4 Algoritma Knuth-Morris-Pratt (KMP)

(64)

bersamaan pada tahun 1977. Algoritma Knuth-Morris-Pratt melakukan perbandingan karakter teks dan karakter pada pola dari kiri ke kanan. Ide dari algoritma ini adalah bagaimana memanfaatkan karakter-karakter pola yang sudah diketahui ada di dalam teks sampai terjadinya ketidakcocokkan untuk melakukan pergeseran. Seperti pada gambar 2.2 :

Gambar 2.2 Pergeseran dalam Algoritma Pencocokan String

Misalkan, string teks y pada gambar 2 mempunyai panjang n, indeksnya dinyatakan dengan i, serta string pola x, mempunyai panjang m, indeknya dinyatakan dengan j. Jika terjadi ketidakcocokan di x[j] = a dan y[i+j] = b, maka telah diketahui terdapat karakter-karakter pola yang ada pada teks yaitu x[0..j-1] = y[i..j+j-1] = u. karakter-karakter ini dapat dimanfaatkan sehingga dapat dimungkinkan melakukan pergeseran yang lebih jauh.

Secara sistematis, langkah-langkah yang dilakukan algoritma Knuth-Morris-Pratt pada saat mencocokkan string:

1. Algoritma Knuth-Morris-Pratt mulai mencocokkan pattern pada awal teks. 2. Dari kiri ke kanan, algoritma ini akan mencocokkan karakter per karakter

pattern dengan karakter diteks yang bersesuaian, sampai salah satu kondisi berikut dipenuhi:

a. Karakter dipattern dan diteks yang dibandingkan tidak cocok

(mismatch).

b. Semua karakter dipattern cocok. Kemudian algoritma akan memberitahukan penemuan di posisi ini.

(65)

2.4.1 Kelebihan Algoritma Knuth-Morris Pratt (KMP)

Pada algoritma KMP, kita memelihara informasi yang digunakan untuk melakukan jumlah pergeseran. Algoritma menggunakan informasi tersebut untuk membuat pergeseran yang lebih jauh, tidak hanya satu karakter.

2.4.2 Kekurangan Algoritma Knuth-Morris Pratt (KMP)

Kekurangan yakni efektifitas dari algoritma ini akan berkurang seiring dengan bertambahnya aplikasi yang dibuka ketika menjalankan aplikasi ini.

2.4.3 Fungsi Pinggiran (Border Function) Pada Metode KMP

Fungsi pinggiran b(j) didefinisikan sebagai ukuran awalan terpanjang dari P yang merupakan akhiran dari P[1..j]. Sebagai contoh, tinjau pattern P = ababaa. Nilai F untuk setiap karakter di dalam P adalah sebagai berikut:

Tabel 2.2 Fungsi Pinggiran

J 1 2 3 4 5 6

P[j] A B A B A A

B[j] 0 0 1 2 3 1

2.4.4 Alur Dari Algoritma Knuth-Morris-Pratt (KMP)

masukan:

sebuah array karakter, S (teks yang akan dicari) sebuah array karakter, W (kata yang dicari)

output:

integer (yang berbasis-nol posisi di S di mana W adalah ditemukan) mendefinisikan variabel:

integer, m ← 0 (awal perbandingan saat ini dalam S)

integer, i ← 0 (posisi dari karakter saat ini di W)

(66)

selama m + i adalah kurang dari panjang dari S, lakukan: jika W [i] = S [m + i],

jika S sama dengan (panjang dari W) -1, kembali m

i ← i + 1

jika tidak,

m ← m + i - T [i],

jika T [i] adalah lebih besar dari -1,

i ← T [i]

lain

i ← 0

(Jika kita mencapai di sini, kita telah mencari semua S tidak berhasil) mengembalikan panjang dari S.

Gambar 2.3 Algoritma KMP

2.5 Netbeans

Fatta (2007) netbeans adalah sebuah proyek software OpenSource. Proyek Netbeans

mulai diprakarsai oleh Perusahaan Sun Microsistems sejak bulan Juni 2000 dan terus berkembang hingga saat ini. Netbeans mengacu pada dua hal, yaitu Netbeansplatform

untuk pengembangan aplikasi desktop java dan sebuah Netbeans IDE (Integrated Development Environment). Netbeans dimulai pada tahun 1996 sebagai Xelfi (Delphi), Java IDE proyek mahasiswa di bawah bimbingan Fakultas Matematika dan Fisika di Charles University di Praha. Pada tahun 1997 Staněk Romawi membentuk

perusahaan untuk proyek tersebut dan menghasilkan versi komersial Netbeans IDE hingga kemudian dibeli oleh Sun Microsistems pada tahun 1999. IDE Netbeans

memiliki editor untuk file Java yang berbasiskan teks ataupun GUI (Graphical User Interface). Ada bermacam-macam proyek file Java yang dapat dibuat di dalam

Netbeans. Netbeans yang berisi sebuah aplikasi GUI Java yang bertujuan sebagai sarana untuk memperkenalkan fitur editor teks dari IDE Netbeans.

Gambar

Tabel 3.8. Scenario-07
Gambar 3.4  Activity Diagram Sistem Aplikasi
Gambar 3.5  Sequence Sistem Aplikasi
Gambar 3.7 Rancangan Halaman Menu
+7

Referensi

Dokumen terkait

Sebuah skripsi yang diajukan untuk memenuhi salah satu syarat memperoleh gelar sarjana pada Fakultas Pendidikan Bahasa dan Sastra. ©Rima Puspasari 2016 Universitas

Pada fraksi fenol suhu sedang (91-132 ͦ C) terdiri dari distilat cis- dan trans-isoeugenol, siringol, dan metilsringol yang memiliki rasa yang murni sifat perasa asapan.Pada

Sejalan dengan ketentuan ajaran Islam yang selalu menetapkan standar umum pada setiap kewajiban yang dibebankan kepada umatnya, maka dalam penetapan harta menjadi

Perlakuan dirancang dengan Rancangan Acak Lengkap (RAL) terdiri dari 5 jenis bahan aktif yaitu metomil, bifentrin, imidakloprid, tembaga oksida dan metidation pada taraf

Dapat dilihat juga hasil dari peneliti lainnya yang melakukan pemurnian asap cair tempurung kelapa secara redistilasi pada suhu 100-125 o C menunujukkan kadar total fenol sebesar

Sistem tersebut memberikan hasil berupa kemungkinan penyakit kelamin yang dialami oleh pengguna, diagnosa pada sistem ini dilakukan dengan cara pengguna mengisi keluhan

(1) berdasarkan hasil penelitian dan pengujian hipotesis menunjukkan bahwa hasil belajar matematika siswa yang belajar menggunakan strategi pembelajaran kontekstual

Sekali-sekali pasien akan mengalami rasa napas yang pendek (seperti orang yang kelelahan) dan bukanya tekanan pada substernal.Sekali-sekali bisa pula