• Tidak ada hasil yang ditemukan

Implementasi Algoritma Knuth-Morris Pratt String Matching Untuk Mencari Kata Atau Istilah Pada Kamus Komputer Berbasis Android

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algoritma Knuth-Morris Pratt String Matching Untuk Mencari Kata Atau Istilah Pada Kamus Komputer Berbasis Android"

Copied!
101
0
0

Teks penuh

(1)

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);

(2)

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

(3)

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);

(4)

}

} 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) {

(5)

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);

(6)

} 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);

(7)

});

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();

(8)

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);

(9)

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);

}

(10)

}

System.out.println("Proses Baca Data Selesai");

try {

String NamaFile = folder.toString()+"/"+"kerjaku.csv";

(11)

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;

(12)

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"/>

(13)

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"

(14)

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" />

(15)

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

(16)

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"

(17)

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"

(18)

<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

(19)

<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

(20)

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

(21)

<activity

android:name=".CariKata"

android:label="@string/app_name" > </activity>

<activity

android:name=".Tentang"

android:label="@string/app_name" > </activity>

</application>

</manifest>

(22)

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

(23)

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

(24)

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

(25)

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.

(26)

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

(27)

,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,

(28)
(29)
(30)
(31)
(32)
(33)

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

(34)

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

(35)

3.4.1. Flowchart System

(36)

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

(37)

Gambar 3.10. Flowchart Proses Knuth morris pratt

tidak

ya tidak

Input pattern yang akan dicari Array s

Selama (in)

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])

qq+1 ii+1

Jika (q==m)

Jika (q==0)

II +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

(38)

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.

(39)

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

(40)

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

(41)

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

(42)

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

(43)

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

(44)

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

(45)

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

(46)

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

(47)

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

(48)

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

(49)

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

(50)

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 :

(51)

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

(52)

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

(53)

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

(54)

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;

(55)

}

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;

}

}

(56)

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

(57)

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

(58)

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);

(59)

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

(60)

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

(61)

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 = "#";

(62)

4.2.5. Tampilan Halaman Tentang

Rancangan halaman Tentang ini berfungsi menampilkan informasi tentang aplikasi kamus Komputer . Rancangan About dapat dilihat pada Gambar berikut.

(63)

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

(64)

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

(65)

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" />

(66)

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.

(67)

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.

(68)

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

(69)

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,

(70)

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] }

(71)

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

(72)

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 = -

(73)

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

(74)

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

(75)

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

Gambar

Gambar 3.5  Activity Diagram Menghitung Nilai Pergeseran Karakter
Gambar 3.6  Activity Diagram Membandingkan Karakter Per Karakter
Gambar 3.7  Activity Diagram System
Tabel 3.1. Keterangan Bagian-Bagian Rancangan Halaman Utama
+7

Referensi

Dokumen terkait

Demikian Pengumuman ini di sampaikan dengan sebenarnya untuk dipergunakan sebagaimana mestinya. Yogyakarta, 10 November

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

Tujuan dari Penelitian ini adalah, untuk menghasilkan soal-soal open-ended yang valid dan praktis pada pokok bahasan segitiga dan segiempat di SMP, serta untuk melihat

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

Kepada mahasiswa disampaikan pem- belajaran dengan urutan (1) fungsi atap dan elemen atap; (2) pendidikan karakter: pentingnya kerjasama di dalam tim sama

Dalam pelaksanaan siklus I yaitu 3 pertemuan yaitu pertemuan pertama guru membuka pelajaran, mempresensi, apersepsi dan motivasi. Guru menjelaskan kepada siswa

Konsep ancaman digunakan dalam tulisan ini untuk memberikan deskripsi ancaman terhadap Indonesia terkait permasalahan peredaran senjata konvensional ilegal yang

Berdasarkan hasil pengujian hipotesis uji F dengan melihat model fit menunjukkan bahwa variabel independen rasio profitabilitas, solvabilitas dan likuiditas berpengaruh