Listing Program
public class CariKata extends Activity { private AutoCompleteTextView actv;
EditText edkata, edarti; Button b1 , b2, btn2kembali; TextView tvarti, tvnotfound;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button) findViewById (R.id.btncari); b2 = (Button) findViewById
(R.id.button_tambah);
btn2kembali= (Button) findViewById (R.id.btn2_cari);
List<String> listkata = new ArrayList<String>();
File fl = new
File(Environment.getExternalStorageDirectory() + "/contoh");
String ck = fl.toString()+"/"+"kerjaku.csv";
BufferedReader br = null; String line = "";
String cvsSplitBy = "#";
try {
br = new BufferedReader(new FileReader(ck));
} catch (FileNotFoundException e) { e.printStackTrace();
String[] kata = listkata.toArray(new String[listkata.size()]);
ArrayAdapter adapter = new ArrayAdapter
actv = (AutoCompleteTextView)
findViewById(R.id.autoCompleteTextView1);
actv.setAdapter(adapter);
b1.setOnClickListener( new View.OnClickListener(){
public void onClick(View arg0) { actv = (AutoCompleteTextView)
findViewById(R.id.autoCompleteTextView1);
tvarti = (TextView) findViewById(R.id.tvArti);
File folder = new
File(Environment.getExternalStorageDirectory() +
"/contoh"); String csv =
folder.toString()+"/"+"kerjaku.csv";
KMP k = new KMP();
String cari = actv.getText().toString(); System.out.println("Terjemahan kata "+cari);
BufferedReader br = null;
String line = "";
String cvsSplitBy = "#";
int ketemu = 0; try {
br = new BufferedReader(new FileReader(csv)); while ((line = br.readLine()) != null) {
String[] kamus = line.split(cvsSplitBy);
String kata = kamus[0]; String arti = kamus[1];
int first_occur_position = k.kmp(kata , cari);
}
} catch (FileNotFoundException e) { e.printStackTrace();
System.out.println("Proses Baca Data Selesai");
if(ketemu<1){
tvarti.setText("Kata Tidak Ditemukan");
public void onClick(View v) {
// TODO Auto-generated method stub Intent i = new Intent(CariKata.this, TambahKata.class);
public void onClick(View v) {
Intent i = new Intent(CariKata.this,
public int[] prekmp(String pattern) {
int[] next = new int[pattern.length()]; int i=0, j=-1;
public int kmp(String text, String pattern) { int[] next = prekmp(pattern);
} import android.content.Intent; //indah tmbah import android.os.Bundle;
public class MainActivity extends ActionBarActivity {
Button cari, tambah;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.dashboard);
cari = (Button) findViewById (R.id.button_cari);
tambah = (Button) findViewById (R.id.button_tambah);
cari.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, CariKata.class);
startActivity(i);
});
tambah.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(MainActivity.this, TambahKata.class);
public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
import java.io.IOException;
public class TambahKata extends Activity { Button btn2;
Button b1;
Button btnsimpan;
TextView tvarti, tvnotfound; EditText edkata, edarti;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.tambah_kata);
b1 = (Button) findViewById (R.id.btncari); btn2 = (Button)findViewById(R.id.btn2);
btn2.setOnClickListener( new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent i = new Intent(TambahKata.this, MainActivity.class);
edkata =
(EditText)findViewById(R.id.edkata); edarti =
(EditText)findViewById(R.id.edarti);
String kata = edkata.getText().toString(); String arti = edarti.getText().toString();
List<String> listkata = new
ArrayList<String>();
List<String> listarti = new ArrayList<String>();
File folder = new
BufferedReader br = null; String line = "";
String cvsSplitBy = "#"; try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) { String[] kamus = line.split(cvsSplitBy); String kata_b = kamus[0];
String arti_b = kamus[1];
listkata.add(kata_b); //terus di masukin ke kotak
listarti.add(arti_b);
}
}
System.out.println("Proses Baca Data Selesai");
try {
String NamaFile = folder.toString()+"/"+"kerjaku.csv";
package com.indah.kmp;
public class Tentang extends Activity { Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.tentang);
btn1 = (Button)findViewById(R.id.button1); btn1.setOnClickListener( new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent i = new Intent(Tentang.this, MainActivity.class);
public class Bantuan extends Activity { Button btn1;
protected void onCreate(Bundle savedInstanceState) {
public void onClick(View v) {
Intent i = new Intent(Bantuan.this, MainActivity.class);
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingTop="@dimen/activity_vertical_margin" android:background="@drawable/kamus"
tools:context="com.indah.kmp.MainActivity" >
<Button
android:id="@+id/button_tambah" android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/btncari" android:layout_alignBottom="@+id/btncari" android:layout_alignParentRight="true" android:text="Tambah Kata"/>
android:id="@+id/btncari"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView3" android:layout_alignLeft="@+id/textView1" android:layout_marginBottom="18dp"
android:text="Cari" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/btncari" android:layout_centerVertical="true"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/btncari" android:layout_below="@+id/textView3" android:layout_marginTop="20dp"
android:textColor="#000000" android:text="TextView"
android:textSize="15sp" />
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView1" android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="16dp"
android:ems="10" >
<requestFocus /> </AutoCompleteTextView>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true"
android:textSize="27sp" android:textStyle="bold" />
<Button
android:id="@+id/btn2_cari"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button_tambah" android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/button_tambah" android:layout_marginBottom="24dp"
android:layout_marginRight="17dp" android:text="Kembali" />
android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10"
android:inputType="textMultiLine" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Kembali" />
dashboard.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android "
android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/huruf" android:src="@drawable/icon"
>
<Button
android:id="@+id/button_cari"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginRight="35dp" android:layout_marginTop="86dp"
android:layout_toLeftOf="@+id/button_tambah" android:height="80dp"
android:text="Cari Kata" android:width="120dp" />
<Button
android:id="@+id/button_tambah" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignTop="@+id/button_cari" android:layout_marginRight="26dp"
android:height="80dp"
android:text="Tambah Kata" android:width="120dp" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button_tambah" android:layout_centerVertical="true"
android:height="80dp" android:text="Bantuan" android:width="120dp" />
<Button
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button_cari" android:layout_centerVertical="true"
android:height="80dp"
android:text="Tentang Aplikasi" android:width="120dp" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button_cari" android:layout_alignParentTop="true"
android:layout_alignRight="@+id/button_tambah" android:gravity="center"
android:layout_marginTop="28dp"
android:text="KAMUS ISTILAH KOMPUTER"
android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/addkamus" android:orientation="vertical" >
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_marginBottom="24dp" android:layout_marginRight="27dp" android:text="Kembali" />
<EditText
android:id="@+id/edarti"
android:layout_alignBottom="@+id/btncari" android:layout_alignLeft="@+id/textView3" android:layout_alignRight="@+id/btn2" android:layout_marginBottom="57dp" android:ems="10" >
<requestFocus /> </EditText>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Kata"
android:textColor="#FF6600" android:textSize="27sp" android:textStyle="bold"
android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="18dp" android:layout_marginTop="26dp"
android:textAppearance="?android:attr/textAppearanceMediu m" />
<EditText
android:id="@+id/edkata"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView3" android:layout_alignRight="@+id/edarti" android:layout_below="@+id/textView2" android:layout_marginTop="27dp"
android:ems="10" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2" android:layout_below="@+id/edkata"
<Button
android:id="@+id/btncari" android:layout_width="146dp"
android:layout_height="wrap_content" android:layout_above="@+id/btn2"
android:layout_alignLeft="@+id/textView3" android:layout_marginBottom="76dp"
android:text="Simpan" />
android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/tentang" android:orientation="vertical"
android:singleLine="false" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView1" android:layout_marginTop="35dp"
android:layout_weight="0.11"
android:text="Kamus Istilah Komputer ini yaitu sebuah alat bantu bagi manusia untuk mendapatkan arti dari suatu kata atau istilah yang biasanya disusun berdasarkan abjad sehingga akan lebih mudah mengetahui makna dari istilah komputer. Dengan menggunakan
perangkat teknologi mobile device berbasis android
<Button
android:id="@+id/button1"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView2" android:layout_marginTop="47dp"
android:text="Kembali" />
android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/bantuan" android:orientation="vertical" >
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="1. Instal KMP.apk pada handpone Android. 2. lalu buka aplikasi KMP3. Terdapat 4 menu tombol pada Halaman Utama 4. Tombol CARI KATA yaitu halaman untuk melakukan pencarian istilah komputer.5. Tombol TAMBAH KATA yaitu halaman untuk menambah kosa kata baru istilah komputer .6. Tombol TENTANG yaitu Halaman untuk mengetahui tentang Aplikasi Komputer 7. Tombol BANTUAN yaitu Halamat untuk mendapatkan cara menggunakan Aplikasi." />
<Button
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Kembali" />
package="com.indah.kmp" android:versionCode="1" android:versionName="1.0" >
<uses-sdk
<activity
android:name=".CariKata"
android:label="@string/app_name" > </activity>
<activity
android:name=".Tentang"
android:label="@string/app_name" > </activity>
</application>
</manifest>
Daftar Pustaka
Alwi,dkk. 2003. Tata Bahasa Baku Bahasa Indonesia Edisi Ketiga. Jakarta: Balai Pusaka.
Atrinawati, Lovinta Happy. 2006. Mengembangkan Aplikasi Enterprise Berbasis
Android . Yogjakarta. Gava Media.
Bentley, Lonnie D dan Whitten, Jeffrey L. 2007. Sistems Analysis and Design for
the Global Enterprise, 7th Edition, International Edition. McGrawHill, New York.
Cormen, Thomas H, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. 2009. Introduction to Algorithms 3rd Ed, hal 1002-1012. London. The MIT Press.
Manning, C, Raghavan, P & Schütze, R. 2009. An Introduction to Information
Retrieval. (online). http://nlp.stanford.edu/IR-book/pdf/irbookonlinereading.pdf (diakses 9 mei 2014).
D.E. KNUTH, J.H. MORRIS, V.R. PRATT. 1977. Fast Pattern Matching in Strings. SIAM Journal of Computing 6, 2, 323-350. (online)
2015).
Febriyan, Rama .2013.Penggunaan Pattern Macthing dalam Penentuan Gen pada
BLAST. Institut Teknologi Bandung.
Huda, Arif Akbarul Huda. 2013. Live Coding! 9 Aplikasi Android Buatan Sendiri. Yogyakarta:Andi.
Hoetomo. 2005. Kamus Lengkap Bahasa Indonesia. Surabaya : Mitra Pelajar. Jogiyanto. 2005. Pengenalan Komputer. Yogyakarta: Andi.
Munir, Rinaldi. 2001. Algoritma & Pemrograman dalam Bahasa Pascal dan C
(Buku 1&2). Bandung: Informatika.
Nimisha Singla, Deepak Garg. 2012. String Matching Algorithms and their
Applicability in various Applications . International Journal of Soft
Computing and Engineering (IJSCE) I (6 ) : 218-222. (online) http://ijcsi.org/papers/IJCSI-9-1-1-219-226.pdf (diakses 30 mei 2014).
Poerwadarminta. 2007. Kamus Umum Bahasa Indonesia. Jakarta: Balai Pustaka. Purwanto, Eko Budi. 2008. Perancangan & Analisis Algoritma. Yogyakarta.:Graha
Safaat, Nazruddin. 2011. Pemrograman Aplikasi Mobile. Bandung:Informatika. Safaat, Nazruddin. 2014. Pemrograman Aplikasi Mobile smartphone dan Tablet PC
berbasis Android. Bandung:Informatika.
Satyaputra, Alfa, Eva Maulina. 2014. Beginning Android Pemrograming with ADT
Budle . Yogjakarta. Alex Media Komputindo.
Shafranovich, Y .2005. Common Format and MIME type For Comma-Separated
Values (CSV) Files.
Utomo, Eko Priyo. 2009. Panduan Mudah Mengenal Bahasa Java. Jakarta:Yraa Widya
Wicaksono, Kukuh Nasrul. 2007. Penerapan Algoritma Pencocokan String
Knuth-Morris-Pratt Sebagai Algoritma Pencocokan DNA. (online).
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Sistem
Masalah utama yang diangkat dari penelitian ini adalah Bagaimana merancang dan membangun aplikasi yang dapat mendukung pencarian istilah komputer dengan metode Algoritma Knuth Morris Pratt String Matching berbasis Android.
Gambar 3.1. merupakan diagram Ishikawa yang dapat digunakan untuk menganalisis masalah. Bagian kepala atau segiempat yang berada di sebelah kanan merupakan masalah. Sementara di pada bagian tulang merupakan penyebab.
Gambar 3.1 Diagram Ishikawa Untuk Analisis Masalah
Sistem pembuatan kamus istilah komputer ini menggunakan Unified Modeling
Language (UML). Sistem yang akan dibangun menggunakan Eclipse yang
operasi mobile yang dalam hal ini sistem akan dikembangkan untuk perangkat
Android.
Dalam Model UML ini akan digambarkan beberapa pemodelan dari sistem yang akan dibangun. Dari pemodelan requirement, pemodelan Analysis dan pemodelan Design. Tool yang digunakan untuk menggambarkan model UML adalah
Umlet.
3.2. Analisis Kebutuhan Sistem
Untuk membangun sebuah sistem, perlu dilakukan sebuah tahap analisis kebutuhan sistem. Analisis kebutuhan sistem dapat dikelompokkan menjadi 2 bagian yaitu: kebutuhan fungsional dan kebutuhan non-fungsional.
3.2.1. Kebutuhan Fungsional
Kebutuhan fungsional dibutuhkan untuk mengetahui hal-hal yang bisa dikerjakan oleh sistem. Kebutuhan fungsional sistem yang akan dirancang antara lain sebagai berikut:
1. Sistem harus menyediakan Versi Android yang sudah ditentukan untuk menginstal aplikasi Kamus Berbasis Android
2. Sistem dapat melakukan pencarian untuk mencari istilah atau kata pada komputer agar mendapatkan informasi kata tersebut dengan mengimplementasikan algoritma Knuth Morris Pratt String Matching.
3. Sistem dapat menyediakan tempat untuk menambahkan kosa kata yang baru sehingga pengguna aplikasi dapat menyimpan kata atau istilah yang berhubungan dengan komputer.
3.2.2. Kebutuhan Non-Fungsional
Kebutuhan non-fungsional merupakan deskripsi dari beberapa fitur, karateristik, dan batasan suatu sistem. Kebutuhan Non-Fungsional dari sistem adalah:
1. Mudah digunakan (User friendly) yaitu Sistem yang akan dibangun harus user
friendly, artinya bahwa sistem mudah digunakan oleh user dengan tampilan
(interface) yang sederhana dan mudah dimengerti.
2. Menjadi Referensi yaitu Sistem yang akan dibangun diharapkan mampu menjadi referensi bagi user untuk mencari istilah komputer serta dapat menambahkan istilah komputer yang belum terdapat pada database istilah.
3. Pelayanan Sistem yang telah dirancang bisa dikembangkan ke tingkat yang lebih kompleks lagi bagi pihak-pihak yang ingin mengembangkan sistem tersebut sehingga solusi yang diberikan lebih efektif.
4. Tampilan antarmuka sistem dapat dengan mudah dimengerti oleh pengguna sistem.
5. Perangkat lunak yang dibangun akan menampilkan pesan not found untuk setiap kata istilah yang tidak tersimpan dalam databasenya.
3.3. Pemodelan Sistem
Pemodelan sistem yang dirancang penulis bertujuan menggambarkan kondisi dan bagian-bagian yang berperan dalam sistem yang dirancang. Pemodelan sistem dilakukan dengan membuat use-case diagram, activity diagram dan sequence
diagram.
3.3.1. Use-Case Diagram
Use case merupakan fungsionalitas dari suatu sistem, sehingga customer atau
,Gambar 3.2 Use Case Algoritma Knuth morris pratt
3.3.2. Activity Diagram
Activity diagram merupakan salah satu cara memodelkan event-event yang terjadi
dalam use case. Pada diagram ini secara ensensial mirip dengan diagram alir (Flowchart), memperlihatkan aliran kendali dari suatu aktifitas ke aktifitas lainnya.
Activity diagram berfungsi untuk menvisualisasikan, menspesifikasi, mengkonstruksi,
Tabel 3.1. Keterangan Bagian-Bagian Rancangan Halaman Utama
3.3.3. Sequence Diagram
Sequence Diagram ialah interaksi antar objek dalam sebuah system yang biasa
digunakan untuk menggambarkan scenario atau rangkaian langkah-langkah yang dilakukan sebagai respon dari sebuah event uuntuk menghasilkan output tertentu. Diawali dari apa yang men-trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal dan output apa yang dihasilkan. Seperti pada gambar 3.8: Name Activity Diagram Activity diagram System
Actors User
Deskripsi Activity ini mendeskripsikan proses System pada Aplikasi Kamus Komputer
Prakondisi Sudah Masuk ke tampilan utama Bidang Khas Suatu
Kejadian
Kegiatan User Respon system 1. Memilih menu tombol
2. Menekan tombol cari kata
3. Menginputkan istilah yang ingin dicari
4. Menekan tombol tambah kata
5. Menambahkan arti dan kata yang baru
6. Menekan tombol tentang
7. Menekan tombol
bantuan.
1. System menampilkan halaman yang dipilih 2. System akan melakukan
searching pada dataset 3. Tampilkan arti istilah
pada kamus komputer 4. Menyimpan kosa kata
yang baru.
5. Kembali pada tampilan utama
Gambar 3.8 Sequence System Pada Kamus Komputer
Dari keterangan diatas dapat digambarkan dengan sequence diagram mengenai informasi sistem yang berjalan saat ini, sehingga dengan diagram ini dapat menggambarkan pergerakan sebuah objek dan pesan yang terjadi di dalam sistem penyampaian informasi
3.4. Perancangan Sistem
3.4.1. Flowchart System
Keterangan :
Pada gambar 3.9 dijelaskan mengenai Menu Utama Aplikasi. User dapat masuk melalui halaman menu utama dan melakukan pilihan di aplikasi kamus tersebut. User dapat memilih melakukan pencarian istilah komputer, user dapat menambahkan kata baru untuk dimasukkan ke Kamus komputer, user juga dapat melihat informasi bantuan terkait aplikasi kamus tersebut dan user juga dapat mengetahui cara penggunakan kamus tesebut.
3.4.2. Flowchart Algoritma Knuth morris pratt
Pada gambar 3.10. merupakan penjelasan dari algoritma Knuth Morris Pratt, flowchart ini menjelaskan bagaimana metode Knuth Morris Pratt mendapatkan output yang berupa posisi karakter yang cocok. Terlihat pada gambar, metode knuth Morris
Pratt menyimpan nilai pergeseran dalam variable (i), pergeseran dilakukan sebanyak
Gambar 3.10. Flowchart Proses Knuth morris pratt
tidak
ya tidak
Input pattern yang akan dicari Array s
Selama (in)
Selesai Output i – q;
ya Mulai
Proses Perhitungan Panjang Karakter Pattern s(m) dan panjang karakter teks w(n)
Jika (s[q+1]==w[i+1])
qq+1 ii+1
Jika (q==m)
Jika (q==0)
II +1
Proses Geser Pola ke Kanan ya
tidak Array int s – output
Int, p 0 (awalan saat ini dalam s) Int, I 0 (posisi dari karakter di w)
tidak
3.5.Perancangan Antarmuka Sistem
Untuk rancangan antar muka dari sistem yang akan dibangun menggunakan bahasa pemograman Java. Sistem akan dibangun menggunakan compiler Eclipse Luna dengan Android SDK. Handphone digunakan untuk menampilkan antar muka yang
responsive (menyesuaikan dengan display perangkat, tempat aplikasi berjalan). Antar
muka menggunakan 1 Menu Utama dan 4 halaman setiap antar muka : Menu Utama
1.1Cari (System pencarian Istilah komputer) a. Pencarian
b. Tambah kata c. Kembali
1.2Tambah Kata ( sistem untuk menambahkan istilah baru) a. Simpan (melakukan penyimpanan kata dan artinya) b. Kembali (kembali ke menu utama)
1.3Tentang (Menjelaskan mengenai pembuat aplikasi) a. Kembali
1.4Bantuan (Menjelaskan mengenai penggunaan aplikasi) a. Kembali
3.5.1. Halaman Utama
Halaman utama merupakan tampilan awal yang menampati nama dari project program tersebut, ketika program dijalankan pada handphone ataupun pada emulator. Setelah tampil Dimana halaman utama ini terdiri dari beberapa tombol, yaitu tombol cari, tombol tambah kata, tombol tentang dan tombol About . Tampilan rancangan halaman utama dapat dilihat pada Gambar 3.11.
Gambar 3.11 Rancangan Halaman Utama
Tabel 3.1. Keterangan Bagian-Bagian Rancangan Halaman Utama
NO. Jenis Objek Keterangan
1 Nama aplikasi
(Edit Teks)
Judul Aplikasi yang akan dirancang.
2 Nama halaman utama Edit Teks
Sub judul aplikasi
3 Tombol cari Berisi halaman pencari 4 Tombol tambah kata Berisi halaman tambah kata
Keterangan :
Untuk dapat menjalankan program pada emulator eclipse atau handphone, terlebih dahulu harus membuat Android SDK dan AVD Manager, setelah selesai kemudian
create AVD, kemudian buat project baru pada eclipse kemudian tentukan Project
Name, Applicationa Name, Package Name, Create Activity dan Min SDK Version,
setelah selesai diisi semuanya kemudian finish. Selanjutnya setelah selesai pembentukan project pada eclipse kemudian dimulai dengan pengetikan program. Sebelum memulai pengetikan, terlebih dahulu atur path penyimpanan dan tentukan nama file dari proyek yang telah dibuat sebelumnya pada eclipse. Setelah selesai pengetikan kemudian simpan ke file dan buka kembali eclipse untuk menjalankan program
3.5.2. Rancangan Halaman Pencarian Kata
Halaman Pencarian Kata ini yang akan kita gunakan untuk mendapatkan istilah komputer dengan menggunakan metode algoritma Knuth-Morris-Pratt yang membantu untuk mencari kata lebih cepat. Karena algoritma ini melakukan pergeseran lebih cepat untuk membaca karakter yang dicari .
Disini menggunakan Auto Complete Text View yang berfungsi untuk memberi pilihan yang kita cari. Contohnya, jika kita mengetikkan satu kata pada google.com. saat masih mengetikkan beberapa huruf, google akan otomatis memberi beberapa pilihan untuk kita pilih, sehingga tidak perlu lagi mengetik secara lengkap.
Tabel 3.2. Keterangan Bagian-Bagian Rancangan Halaman Pencarian Kata
NO. Jenis Objek Keterangan
1 Nama Aplikasi Teks view
Judul aplikasi yang dibuat
2 Kolom kata (Edit Teks)
Tempat melakukan pencarian kata
3 Tombol cari Tombol ini akan melakukan pencarian
menggunakan menggunakan Algoritma String
Matching yang akan mencari databasenya dengan
fotmat .csv
4 Tombol tambah kata Tombol ini akan ke halaman tambah kata yang akan masuk ke format .csv
3.5.2. Rancangan Halaman Tambah Kata
Halaman ini Pengguna Aplikasi akan dapat menambahkan sendiri Kosa Kata yang baru agar memperkaya Istilah yang terdapat dalam Aplikasi Kamus Komputer.
Gambar 3.13 Rancangan Halaman Tambah Kata
Tabel 3.3. Keterangan Bagian-Bagian Rancangan Tambah Kata
NO. Jenis Objek Keterangan
1 Teks View Keterangan nama pada kolom kata
2 Kolom kata (Edit Teks)
Tempat melakukan pencarian kata
3 Tombol cari Tombol ini akan melakukan pencarian
4 Tombol simpan Tombol ini akan melakukan penyimpanan ke dalam format .csv
3.5.2. Rancangan Halaman Tentang
Rancangan halaman Tentang ini berfungsi menampilkan informasi tentang
Aplikasi Kamus Komputer. Rancangan About dapat dilihat pada Gambar 3.14.
Gambar 3.14. Rancangan Halaman Tentang Aplikasi
Tabel 3.4. Keterangan Bagian-Bagian Rancangan Tentang Aplikasi
NO. Jenis Objek Keterangan
1 Teks view Judul halaman tentang
2 Edit Teks Keterangan pada halaman tentang
3.6.4. Rancangan Halaman Bantuan
Rancangan Halaman Bantuan ini akan menginformasikan bagaimana cara menggunakan Aplikasi Kamus komputer tersebut kepada setiap pengguna yang akan mencari kata atau istilah komputer.
Gambar 3.15. Rancangan Rancangan Tampilan Bantuan
Tabel 3.5. Keterangan Rancangan Tampilan Bantuan
NO. Jenis Objek Keterangan
1 Teks view Judul halaman Bantuan
2 Edit Teks Keterangan pada halaman Bantuan
BAB 4
IMPLEMENTASI DAN PENGUJIAN
4.1. Pengujian Sistem
Pencarian istilah dalam kamus komputer dirancang akan menggunakan algoritma
string matching sebagai solusi dalam pencarian istilah berdasarkan isi Kamus,
berhubung isi kamus komputer yang sangat banyak, maka sangat sulit untuk merealisasikan penyajian arti dari istilah berdasarkan isi Kamus komputer secara keseluruhan karena terbatasnya ukuran layar handphone yang berbasis Android. Oleh karena itu pada implementasi algoritma string matching untuk pencarian istilah dalam kamus komputer diharapkan dapat menyelesaikan masalah tersebut, dimana dalam algoritma string matching penyajian arti dari istilah lebih sedikit karena adanya proses seleksi sampai ditemukan istilah berdasarkan isi kamus itu sendiri dengan menggunakan kata kunci. Dalam algoritma string matching, pencarian string dirumuskan sebagai berikut:
1. Sebuah teks (text), yaitu sebuah long string yang panjang n karakter
2. Pattern, yaitu sebuah string dengan panjang m karakter (m<n) yang akan dicari
dalam text.
Dalam algoritma pencocokan string, teks diasumsikan berada dalam memori, sehingga bila kita mencari string di dalam sebuah arsip, maka semua isi arsip perlu dibaca terlebih dahulu kemudian disimpan didalam memory. Jika pattern muncul lebih dari sekali didalam teks, maka pencarian hanya akan memberikan keluaran berupa lokasi pattern ditemukan pertama kali.
Algoritma Knuth , Morris dan Pratt memanfaatkan informasi yang diperoleh dengan perbandingan simbol sebelumnya. Ini tidak pernah kembali membandingkan simbol teks yang telah cocok simbol pattern. Ada beberapa definisi yang perlu dipahami pada algoritma ini: Misalkan A adalah alfabet dan x = x1x2…xk adalah
• Awalan (prefix) dari x adalah upa-string (substring) u dengan u = x1x2…xj – 1 , j є{1, 2, …, k}
dengan kata lain, x diawali dengan u.
• Akhiran (suffix) dari x adalah upa-string(substring) u dengan u = xj – b xj – b + 1 …xk , j є {1, 2, …, k}
dengan kata lain, x di akhiri dengan v.
• Pinggiran (border) dari x adalah upa-string r sedemikian sehingga r = x1x2…xj – 1
dan
u = xj – b xj – b + 1 …xj ,
j є {1, 2, …, k}
dengan kata lain, pinggiran dari x adalah upastring yang keduanya awalan dan juga akhiran sebenarnya dari x.
Misalkan A adalah alfabet dan x = x0 ..., bilangan elemen k - 1 xk serangkaian panjang k atas A. Sebuah awalan x adalah substring u dengan u = x0 ... xb - 1 di mana b elemen {0 , ... , k} yaitu x dimulai dengan u. Sebuah akhiran x adalah substring u dengan u = xk - b ... xk - 1 di mana b elemen {0 , ... , k}
yaitu x berakhir dengan u.
Sebuah awalan u x atau akhiran u x disebut awalan yang tepat atau akhiran, masing-masing, jika equalx Unot, yaitu jika panjang b kurang dari k.
Sebuah perbatasan x adalah r substring dengan r = x0 ... xb - 1 dan r = xk - b ... xk - 1 di mana b elemen {0 , ... , k - 1}
Sebuah perbatasan x adalah substring yang baik awalan yang tepat dan akhiran yang tepat x. Kami menyebutnya panjangnya b lebar perbatasan.
Contoh: Misalkan x = Abacab. Awalan yang tepat x adalah
ε, a, ab, aba, Primero, abaca
Akhiran yang tepat x adalah
ε, b, ab, taksi, ACAB, bacab
Perbatasan x adalah
Perbatasan ε memiliki lebar 0, perbatasan ab memiliki lebar 2. The string kosong ε
selalu perbatasan x, untuk semua x elemen A +. String kosong ε sendiri tidak memiliki perbatasan.
Contoh berikut menggambarkan bagaimana jarak pergeseran algoritma Knuth -
Morris - Pratt ditentukan dengan menggunakan gagasan perbatasan string.
contoh :
0 1 2 3 4 5 6 7 8 9... a b c a b c a b d a b c a b d a b c a b d
Simbol pada posisi 0,...,4 telah dicocokkan. Perbandingan c - d pada posisi 5 menghasilkan ketidakcocokan. Pattern bisa digeser oleh 3 posisi, dan perbandingan yang kembali pada posisi 5.
Jarak pergeseran ditentukan oleh perbatasan terluas dari awalan pencocokan p. Dalam contoh ini , awalan pencocokan abcab , panjangnya j = 5. Perbatasan terluas adalah ab lebar b = 2. Jarak shift j - b = 5-2 = 3.
Pada tahap preprocessing, lebar perbatasan terluas setiap awalan dari pattern ditentukan. Kemudian pada tahap pencarian, jarak pergeseran dapat dihitung sesuai dengan awalan yang cocok .
Teorema : Biarkan r, s menjadi perbatasan string x, di mana | r | < | s |. Maka r adalah perbatasan s.
Bukti : Gambar 1 menunjukkan string x dengan batas r dan s. Karena r adalah awalan dari x, juga merupakan awalan yang tepat s, karena lebih pendek dari s. Tetapi r juga merupakan akhiran x dan, oleh karena itu, akhiran yang tepat s. Dengan demikian r adalah perbatasan s
Definisi: Misalkan x berupa string dan elemen A simbol . Sebuah r perbatasan x dapat diperpanjang oleh , jika ra adalah perbatasan xa .
Gambar 4.2. Perpanjangan Perbatasan
Gambar 4.2 menunjukkan bahwa r perbatasan j lebar x dapat diperpanjang oleh , jika xj = a .
Pada tahap preprocessing array b panjang m + 1 dihitung . Setiap entri b [ i ] berisi lebar perbatasan terluas awalan panjang i dari pattern ( i = 0 , ... , m ) . Karena ε awalan panjang i = 0 tidak memiliki perbatasan , dan menetapkan b [ 0 ] = -1 .
Gambar 4.3 : Awalan panjang i dari pattern dengan perbatasan lebar b [ i ]
Asalkan nilai b [ 0 ], ... , b [ i ] sudah diketahui, nilai b [ i + 1 ] dihitung dengan memeriksa jika perbatasan p0 awalan ... pi - 1 dapat diperpanjang oleh simbol pi. Hal ini terjadi jika pb [ i ] = pi ( Gambar 4.3 ). Perbatasan untuk diperiksa diperoleh dalam urutan menurun dari nilai b [ i ], b [ b [ i ] ] dll
Setelah meningkatkan j oleh pernyataan j++ dalam setiap kasus j adalah lebar perbatasan terluas dari p0 ... pi. Nilai ini ditulis untuk b[ i + 1 ] (b [ i ] setelah meningkat i dengan pernyataan i ++).
Proses Algoritma
void kmpPreprocess()
{
int i=0, j=-1;
b[i]=j;
while (i<m)
{
while (j>=0 && p[i]!=p[j]) j=b[j]; // karakter berikutnya yang tidak cocok
i++; j++; // karakter berikutnya yang tidak cocok
b[i]=j;
}
}
Contoh : Untuk pattern p = ababaa lebar dari perbatasan dalam array b memiliki nilai berikut . Misalnya kita telah b [ 5 ] = 3 , karena ababa awalan panjang 5 memiliki
perbatasan lebar 3
.
j: 0 1 2 3 4 5 6
p[j]: a b a b a a
b[j]: -1 0 0 1 2 3 1
Secara konseptual , algoritma preprocessing di atas dapat diterapkan pada string pt bukan p . Jika sampai batas lebar m dihitung saja, maka perbatasan m lebar beberapa awalan x pt sesuai dengan perbandingan dari pattern di t (asalkan perbatasan tidak self- overlapping ) ( Gambar 4.4 ) .
Hal ini menjelaskan kesamaan antara algoritma preprocessing dan algoritma pencarian berikut .
Pencarian Algoritma
void kmpSearch()
{
int i=0, j=0;
while (i<n) // memindai teks dari kiri ke kanan
{
while (j>=0 && t[i]!=p[j]) j=b[j]; // karakter berikutnya yang tidak cocok
i++; j++; // karakter berikutnya yang tidak cocok
if (j==m) // Apakah semua Pattern cocok?
{
report(i-j);
j=b[j];
}
}
}
Keterangan :
Gambar 4.5 : Pergeseran Pattern Ketika Ketidakcocokan Pada Posisi j Terjadi
Jika semua simbol m dari pattern telah dicocokkan jendela teks yang sesuai (j = m), laporan fungsi disebut untuk melaporkan perbandingan di posisi ij. Setelah itu, pattern digeser sejauh perbatasan terluas memungkinkan.
Pada contoh berikut perbandingan yang dilakukan oleh algoritma pencarian yang ditampilkan, di mana perbandingan diambil dalam warna hijau dan ketidaksesuaian merah.
Contoh pada aplikasi pada kamus Komputer : Teks : FAST ETHERNET
Pattern : THER
Teks :
F A S T E T H E R N E T
T H E R
Langkah 1:
F A S T E T H E R N E T
Pattern[1] tidak cocok dengan Teks[1], maka digeser satu langkah ke kanan.
Langkah 2:
F A S T E T H E R N E T
Pattern[1] tidak cocok dengan Teks[2], maka digeser 1 karakter ke kanan.
Langakah 3:
F A S T E T H E R N E T
Pattern[1] tidak cocok dengan Teks[3], maka Pettern digeser satu karakter ke kanan.
Langkah 4:
F A S T E T H E R N E T
T H E R
T H E R
T H E R
Pattern[1] cocok dengan Teks[4], maka dilanjutkan membandingkan Pattern[2]
dengan Teks[5].
Langkah 5:
F A S T E T H E R N E T
Pattern[2] ternyata tidak cocok dengan Teks[5]. Maka Pencocokan selanjutnya
dimulai lagi dari Pattern[1] dengan membandingkan Pattern[1] dengan Teks[6].
Langkah 6:
F A S T E T H E R N E T
Pattern[1] cocok dengan Teks[6], maka Pattern tidak melakukan pergeseran dan
selanjutnya membandingkan Pattern[2] dengan Teks[7].
Langkah 7:
F A S T E T H E R N E T
Pattern[2] cocok dengan Teks[7], maka dilanjutkan membandingkan Pattern[3]
dengan Teks[8].
Langkah 8:
F A S T E T H E R N E T
Pattern[3] cocok dengan Teks[8], maka dilanjutkan membandingkan Pattern[4]
dengan Teks[9].
T H E R
T H E R
T H E R
Langkah 9:
F A S T E T H E R N E T
Pattern[4] cocok dengan Teks[9], maka pencocokan berhenti karena Pattern yang
dicari telah cocok dengan Teks sehingga terbentuk pattern kata di Teks sesuai dengan
Pattern. Pencocokan berhenti meskipun karakter dalam Teks belum habis.
Berdasarkan contoh di atas maka dapat disimpulkan bahwa informasi yang digunakan untuk melakukan pergeseran adalah berdasarkan hitungan ketidak cocokan Pattern dari kiri pada Teks.
Adapun potongan script pada Eclipse yang digunakan untuk algoritma KMP
string matching sebagai berikut:
KMP.java
package com.indah.kmp;
public class KMP {
public int[] prekmp(String pattern) {
int[] next = new int[pattern.length()];
int i=0, j=-1;
next[0]=-1;
while (i<pattern.length()-1) {
while (j>=0 && pattern.charAt(i)!=pattern.charAt(j))
j = next[j];
i++;
j++;
next[i] = j;
}
return next;
}
public int kmp(String text, String pattern) {
int[] next = prekmp(pattern);
int i=0, j=0;
while (i<text.length()) {
while (j>=0 &&
text.charAt(i)!=pattern.charAt(j))
j = next[j];
i++; j++;
if (j==pattern.length()) return
i-pattern.length();
}
return -1;
}
}
4.2. Implementasi Sistem
Aplikasi Kamus Komputer yang telah dirancang merupakan aplikasi kamus berbasis
mobile, dimana aplikasi mobile tersebut dapat dijalankan pada handphone yang
mendukung sistem operasi Android. Aplikasi kamus istilah komputer dibuat dengan menggunakan bahasa pemograman Java, dimana untuk mengetikan listing programnya digunakan Eclipse Luna yang merupakan perangkat lunak emulator dan berfungsi juga untuk menjalankan programnya.
Aplikasi Kamus Komputer juga menggunakan algoritma String Matching
Knuth-Morris-Pratt untuk proses pencarian istilah di dalam kamus komputer.
Algoritma ini dapat memelihara informasi yang digunakan untuk melakukan jumlah pergeseran. Algoritma menggunakan informasi tersebut untuk membuat pergeseran angka lebih jauh. Dengan algoritma Knuth-Morris-Pratt ini, waktu pencarian dapat dikurangi secara signifikan yang berguna untuk melakukan pencocokan istilah.
4.2.1 Tampilan Halaman Utama
Untuk melakukan pencarian, masukkan pada tombol Cari Kata kemudian pilih menu kemudian akan muncul halaman dari pilihan menu. Tampilan rancangan halaman utama dapat dilihat pada gambar dibawah ini. Gambar Halaman Utama setelah di install kamus komputer di layar handphone.
Gambar 4.7. Halaman Utama
4.2.2. Tampilan Halaman Cari Kata
melakukan proses pencocokan kata di dalam Pattern dengan karakter di dalam sebuah
Text, sampai dijumpai kecocokan kata yang dicari.
Dengan adanya fungsi Auto Complete Text View dapat memberi pilihan yang kita cari. Disini contohnya ingin mencari istilah “Access Server” pada saat mengetik 2 huruf. Maka akan muncul secara auto istilah yang sudah tersimpan di dataset
sebelumnya. Dengan begitu akan otomatis memberi beberapa pilihnya untuk kita pilih, sehingga tidak perlu lagi mengetik secara lengkap. Seperti gambar 4.3. adapun potongan Script pada fungsi autocomplete adalah sebagai berikut.
String[] kata = listkata.toArray(new String[listkata.size()]);
ArrayAdapter adapter = new ArrayAdapter
(this,android.R.layout.simple_list_item_1,kata);
actv = (AutoCompleteTextView)
findViewById(R.id.autoCompleteTextView1);
actv.setAdapter(adapter);
Gambar 4.8. Contoh Fungsi Autocomplete
Maka setelah menggunakan fungsi Auto-Complete maka kita akan menggunakan tombol cari untuk mendapatkan informasi maknanya. Pada Halaman ini juga menyediakan Tombol Tambah Kata yaitu tombol ketika kita klik akan menuju ke tampilan Halaman Tambah Kata. Jika Ingin kembali pada Halaman Utama telah disediakan tombol Kembali.
4.2.3. Tampilan Halaman Tambah Kata
Komputer. Disini kosa kata yang ditambah akan otomatis berada di file .csv yang akan menyimpan setiap kata atau istilah yang di inputkan.
Gambar 4.9. Halaman Tambah Kata
4.2.4. Tampilan Dataset .CSV
Gambar 4.10. Penyimpanan Kata atau Istilah Komputer
Disamping itu file kerjaku.csv berada didalam folder “contoh” yang akan dipanggil dari tempat penyimpanan eksternal. Pada saat melakukan proses pencarian digunakan juga fungsi autocompete saat memanggil dataset .csv untuk menemukan kata atau islilah pada kamus komputer tersebut. Adapun potongan script yang digunakan sebagai berikut:
File fl = new File(Environment.getExternalStorageDirectory() +
"/contoh");
String ck = fl.toString()+"/"+"kerjaku.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = "#";
4.2.5. Tampilan Halaman Tentang
Rancangan halaman Tentang ini berfungsi menampilkan informasi tentang aplikasi kamus Komputer . Rancangan About dapat dilihat pada Gambar berikut.
Adapun script layout .xml pada eclipse sebagai berikut:
Tentang.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/tentang"
android:orientation="vertical"
android:singleLine="false" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Tentang Aplikasi Komputer"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView1"
android:layout_marginTop="35dp"
android:layout_weight="0.11"
android:text="Kamus Istilah Komputer ini yaitu sebuah alat
bantu bagi manusia untuk mendapatkan arti dari suatu kata atau
istilah yang biasanya disusun berdasarkan abjad sehingga akan lebih
mudah mengetahui makna dari istilah komputer. Dengan menggunakan
perangkat teknologi mobile device berbasis android sebagai alat yang
lebih praktis karena sifatnya portable sehingga memudahkan bagi yang
ingin mendapatkan informasi mengenai Istilah komputer." />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView2"
android:layout_marginTop="47dp"
android:text="Kembali" />
</RelativeLayout>
4.2.6. Tampilan Halaman Bantuan
Rancangan halaman Tentang ini berfungsi menampilkan informasi tentang Aplikasi Kamus Komputer. Rancangan About dapat dilihat pada Gambar
Adapun script layout .xml pada eclipse sebagai berikut:
Bantuan.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bantuan"
android:orientation="vertical" >
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.00"
android:text="Bantuan Menggunakan Aplikasi"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView1"
android:layout_width="228dp"
android:layout_height="wrap_content"
android:text="1. Instal KMP.apk pada handpone Android. 2.
lalu buka aplikasi KMP3. Terdapat 4 menu tombol pada Halaman Utama
4. Tombol CARI KATA yaitu halaman untuk melakukan pencarian istilah
komputer.5. Tombol TAMBAH KATA yaitu halaman untuk menambah kosa kata
baru istilah komputer .6. Tombol TENTANG yaitu Halaman untuk
mengetahui tentang Aplikasi Komputer 7. Tombol BANTUAN yaitu Halamat
untuk mendapatkan cara menggunakan Aplikasi." />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Kembali" />
BAB 5
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Kesimpulan dari penelitian ini adalah:
1. Aplikasi yang dirancang telah mampu memberikan solusi dengan mengimplementasikan algoritma Knuth Morris Pratt String Matching untuk melakukan pencarian String berbasis Android dan dapat menambahkan kosa kata yang baru pada aplikasi kamus komputer.
2. Algoritma Knuth Morris Pratt menyimpan sebuah informasi yang digunakan untuk mendapatkan informasi pada aplikasi kamus komputer menggunakan perangkat mobile.
5.2. Saran
Saran yang dapat diberikan oleh penulis setelah penelitian dilakukan adalah:
1. Algoritma ini akan berkurang efektifitasnya dengan bertambahnya jumlah karakter dari teks sehingga masih perlu untuk tingkatkan dalam pencarian string.
BAB 2
TINJAUAN PUSTAKA
2.1. Definisi Algoritma
2.1.1 Algoritma
Istilah algoritma (algorithm) berasal dari kata “algoris” dan “ritmis”, yang pertama kali diungkapkan oleh Abu Ja’far Mohammed Ibn Musa al Khowarizmi (825 M) dalam buku Al-Jabr Wa-al Muqabla. Dalam bidang pemrograman algoritma didefenisikan sebagai suatu metode khusus yang tepat dan terdiri dari serangkaian langkah yang terstruktur dan dituliskan secara matematis yang akan dikerjakan untuk menyelesaikan suatu masalah dengan bantuan komputer.(Jogiyanto, 2005)
Terdapat beberapa defenisi yang diberikan untuk kata algoritma antara lain: a) Algoritma adalah sekelompok aturan untuk menyelesaikan perhitungan yang
dilakukan oleh tangan atau mesin.
b) Algoritma adalah langkah demi langkah sebuah prosedur berhinggga yang dibutuhkan untuk menghasilkan sebuah penyelesaian.
c) Algoritma adalah urutan langkah-langkah perhitungan yang mentrasformasikan dari nilai masukan menjadi keluaran.
d) Algoritma adalah urutan operasi yang dilakukan terhadap data yang terorganisasi dalam struktur data.
e) Algoritma adalah sebuah program abstrak yang dapat dieksekusi secara fisik oleh mesin.
2.2 String
String dalam ilmu komputer dapat diartikan dengan sekuens dari karakter. Walaupun sering juga dianggap sebagai data abstrak yang menyimpan sekuens nilai data, atau biasanya berupa bytes yang mana merupakan elemen yang digunakan sebagai pembentuk karakter sesuai dengan encoding karakter yang disepakati seperti ASCII, ataupun EBCDIC.
Hubungan string dengan tulisan ini adalah bahwa karakteristik dari musik yang akan disimpan dalam database dapat dianggap serupa dengan string. Hal ini akan memudahkan desainer dalam membangun sistem pencocokan audio dari sampel audio yang akan dikonversi terlebih dahulu menjadi serupa dengan string ataupun deretan bytes. Konversi inilah yang nantinya akan dibandingkan langsung dengan informasi karakteristik yang disimpan dalam database.
2.2.1. String Matching
String matching adalah pencarian sebuah pattern pada sebuah teks (Ronald L. Rivest
dkk. 1994). Prinsip kerja algoritma string matching adalah sebagai berikut:
1. Memindahkan teks dengan bantuan sebuah window yang ukurannya sama dengan panjang pattern.
2. Menempatkan window pada awal teks.
3. Membandingkan karakter pada window dengan karakter dari pattern. Setelah pencocokan (baik hasilnya cocok atau tidak cocok), dilakukan shift ke kanan pada window. Prosedur ini dilakukan berulang-ulang sampai window berada pada akhir teks. Mekanisme ini disebut mekanisme sliding-window. (Rama, 2013).
Algoritma string matching mempunyai tiga komponen utama, yaitu:
1. Pattern, yaitu deretan karakter yang akan dicocokkan dengan teks, dinyatakan
dengan x[0..m-1], panjang pattern dinyatakan dengan m.
2. Teks, yaitu tempat pencocokan pattern dilakukan, dinyatakan dengan y[0..n-1], panjang teks dinyatakan dengan n.
3. Alfabet, yang berisi semua simbol yang digunakan oleh bahasa pada teks dan
2.2.2 Algoritma Knuth Morris Pratt String Matching
Algoritma Knuth Morris Pratt merupakan salah satu algoritma yang sering digunakan untuk menyelesaikan masalah pencocokan string. Algoritma ini adalah
penyempurnaan dari algoritma pencocokan string dengan menggunakan algoritma
brute force. Pada algoritma brute force, setiap kali ditemukan ketidak cocokan pattern
dengan teks, maka pattern akan digeser satu ke kanan. Sedangkan pada algoritma Knuth-Morris-Pratt, kita memelihara informasi yang digunakan untuk melakukan jumlah pergeseran. Algoritma menggunakan informasi tersebut untuk membuat pergeseran angka lebih jauh, tidak hanya satu karakter seperti pada algoritma brute
force. Dengan algoritma Knuth Morris Pratt ini, waktu pencarian dapat dikurangi
secara signifikan. Algoritma Knuth Morris Pratt ini dikembangakan oleh D. E. Knuth, bersama-sama dengan J. H. Morris dan V. R. Pratt.
Algoritma Knuth-Morris-Prath memelihara informasi yang digunakan saat melakukan pergeseran. Informasi ini digunakan untuk melakukan pergeseran yang lebih jauh, tidak seperti brute force yang melakukan pergeseran perkarakter. Pergeseran dilakukan berdasarkan suffix kesamaan suffix dan prefix dalam pattern dan yang ditemukan di dalam teks. Dalam algoritma Knuth Morris Pratt ini kita akan menemui beberapa definisi yang nantinya akan digunakan dalam algoritma ini.
2.2.3 Fungsi Pinggiran
Algoritma Knuth Morris Pratt melakukan proses awal atau preproccesing terhadap
pattern P dengan menghitung fungsi pinggiran (dalam literatur lain menyebut fungsi
overlap, fungsi failure, dsb) yang mengindikasikan pergeseran s terbesar yang
mungkin dengan menggunakan perbandingan yang dibentuk sebelum pencarian
string. Fungsi pinggiran hanya bergantung pada karakter-karakter di dalam pattern,
merupakan akhiran dari P[1..j]. Sebagai contoh, tinjau pattern P = abcabd. Nilai F untuk setiap karakter di dalam P adalah sebagai berikut.
Tabel 2.1 Fungsi Pinggiran Untuk Pattern abcabd
j 1 2 3 4 5 6
P(j) A b c a b d
B(j) 0 0 1 1 2 0
Di bawah ini adalah algoritma untuk menghitung fungsi pinggiran. procedure HitungPinggiran
(input m : integer, P : array[1..m] of char,output b : array[1..m] of integer) { Menghitung nilai b[1..m] untuk
pattern P[1..m] }
2.2.4 Fungsi Pembandingan String
Kemudian cara untuk melakukan pencocokan string dengan menggunakan algoritma
Knuth Morris Pratt adalah sebagai berikut. Misal kita akan mencocokan teks T =
abcabcabd dan kita mempunyai pattern P = abcabd. 123456789 Teks = abcabcabd
Pattern = abcabd
Mula-mula kita hitung fungsi pinggiran dari pattern P tersebut. Fungsi pinggiran P = abacabd tertera seperti table 1 di atas. Kemudian lakukan langkah-langkah berikut. Samakan ujung kiri pattern dengan ujung kiri teks. Karakter-karakter pada karakter 1-5 sama, tetapi pada posisi ke 6 tidak sama. Hal itu karena karakter ke 6 pada teks yaitu c tidak sama dengan karakter ke 6 pada pattern yaitu d. Untuk mencocokan kembali, kita harus menggeser pattern. Jika dalam brute force kita akan menggeser pattern 1 karakter ke kanan. Namun jika menggunakan algoritma Knuth
Morris Pratt jumlah pergeseran pattern ditentukan oleh pinggiran dari awalan P yang
bersesuaian. Pada contoh di atas, awalan yang bersesuaian adalah abcab, dengan panjang l = 5. Pinggiran terpanjang untuk string P[1..5] adalah ab yang panjangnya adalah b(5) = 2. Jarak pergeseran adalah l – b = 5 – 2 = 3. Jadi, pattern P digeser sejauh 3 karakter dan perbandingan dilakukan mulai pada posisi j = 3 dihitung dari awal pattern. ( Kukuh, 2013 ).
procedure KMPsearch(input m,n:integer, input P : array[1..m] of char,input T : array[1..n] of char, output idx :
integer) {
Mencari kecocokan pattern P di dalam teks T dengan algoritma Knuth-Morris- Pratt. Jika ditemukan P di dalam T, lokasi awal kecocokan disimpan di dalam peubah idx.
Masukan: pattern P yang panjangnya m dan teks T yang panjangnya n.
Teks T direpresentasika
sebagai string (array of character) Keluaran: posisi awal kecocokan
(idx). Jika P tidak ditemukan, idx = -
while (i n and not ketemu) do
idx i-m+1 { catatan: jika indeks array dimulai dari 0, maka idx i-m } else
idx -1 endif
(Thomas, 2007)
2.2.4 Klasifikasi Pencocokan String
Pencocokan string (string matching) secara garis besar dapat dibedakan menjadi dua yaitu :
1. 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.
2. Inexact string matching atau Fuzzy string matching, merupakan pencocokan
string secara samar, maksudnya pencocokan string dimana string yang
matching) atau kemiripan ucapan (phonetic string matching). Inexact string
matching masih dapat dibagi lagi menjadi dua yaitu :
a. Pencocokan string berdasarkan kemiripan penulisan (approximate string
matching) merupakan pencocokan string dengan dasar kemiripan dari segi
penulisannya (jumlahah karakter, susunan karakter dalam dokumen).Tingkat kemiripan ditentukan dengan jauh tidaknya beda penulisan dua buah string yang dibandingkan tersebut dan nilai tingkat kemiripan ini ditentukan oleh pemrogram (programmer).
Contoh : compuler dengan compiler, memiliki jumlahah karakter yang sama tetapi ada dua karakter yang berbeda. Jika perbedaan dua karakter ini dapat ditoleransi sebagai sebuah kesalahan penulisan maka dua string tersebut dikatakan cocok.
b. Pencocokan string berdasarkan kemiripan ucapan (phonetic string
matching) merupakan pencocokan string dengan dasar kemiripan dari segi
pengucapannya meskipun ada perbedaan penulisan dua string yang dibandingkan tersebut.
Contoh step dengan step dari tulisan berbeda tetapi dalam pengucapannya mirip sehingga dua string tersebut dianggap cocok. Contoh yang lain adalah step, dengan
steppe, sttep, stepp, stepe. Exact string matching bermanfaat jika pengguna ingin
mencari string dalam dokumen yang sama persis dengan string masukan. Tetapi jika pengguna menginginkan pencarian string yang mendekati dengan string masukan atau terjadi kesalahan penulisan string masukan maupun dokumen objek pencarian, maka
inexact string matching yang bermanfaat.
Pada Implementasi Algoritma Knuth Morris Pratt untun mencari kata atau istilah pada komputer berbasis Android maka masuk dalam klasifikasi pencocokan
string Exact string matching yang merupakan pencocokan string secara tepat dengan
2.3 Mobile Device
Mobile Device merupakan suatu alat yang digunakan oleh pemakai untuk meminta
informasi yang dibutuhkan, dimana informasi dapat diberikan dalam bentuk suara, gambar, dan text. Informasi yang diinginkan dapat dicari melalui fasilitas untuk mengakses internet seperti GPRS atau wireless. Pada umumnya perangkat mobile atau
mobile device lebih praktis karena bersifat mudah dibawa (portable) daripada
perangkat teknologi lainnya. (Agus, 2011)
Meningkatnya pemakaian peranti mobile (mobile device) telah merevolusi kegiatan-kegiatan yang bersifat tradisional menjadi lebih sederhana dan mudah dengan penggunaan perangkat mobile. Mobilitas yang tinggi tidak menjadi penghalang lagi, karena saat ini peranti mobile sudah dapat mengakses server atau pusat data. Peranti mobile sekarang tidak hanya berfungsi sebagai pencatat jadwal dan buku alamat. Fungsi peranti mobile sudah berkembang pesat dan idealnya siap mengganti dokumen berbasis kertas. Mobile device dapat dibagi berdasarkan jumlah kegunaannya menjadi dua jenis yaitu:
1. Single purpose
Mobile device dengan single purpose digunakan untuk satu tujuan saja. contoh:
navigation box yang terdapat pada mobil atau truk pengangkut barang.
2. Multi purpose
Mobile device dengan multi purpose dapat digunakan untuk mengakses
berbagai macam informasi yang diinginkan, contoh : Smart phone, handphone, PDA, Laptop.
Aplikasi kamus komputer yang akan penulis rancang menggunakan perangkat
mobile jenis multi purpose yaitu handphone, di mana handphone yang digunakan