A-1
LISTING PROGRAM
// Source Code MainActivity.java
package id.frappucino;
import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends Activity { private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
private CharSequence mJudulDrawer;
private CharSequence mJudul;
private String[] mNama;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_content);
// inisialisasi
mJudul = mJudulDrawer = getTitle();
mNama = getResources().getStringArray(R.array.array_drawer);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.drawer_kiri);
mDrawerList.setAdapter(new ArrayAdapter(this, R.layout.item_navdrawer, mNama));
// memberi event klik item item daftar nama
mDrawerList.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView arg0, View arg1, int posisi,
long id) {
// memanggil metode pilihItem() pilihItem(posisi);
} });
// mengaktifkan ikon ActionBar kiri-atas sebagai kendali drawer
A-2
untuk
// membuka-menutup jika disentuh
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
// merupakan metode untuk mengaktifkan drawer saat ikon ActionBar
// disentuh atau saat layar sebelah kiri digeser (sliding) ke kanan
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, 0, 0) {
// metode saat drawer dalam kondisi tertutup
// judul pada ActionBar menampilkan item buah terpilih public void onDrawerClosed(View view) {
getActionBar().setTitle(mJudul);
invalidateOptionsMenu();
}
// metode saat drawer dalam kondisi terbuka
// judul pada ActionBar menampilkan nama aplikasi:
public void onDrawerOpened(View drawerView) { getActionBar().setTitle(mJudulDrawer);
invalidateOptionsMenu();
} };
// mDrawerLayout diberi event mDrawerToggle mDrawerLayout.setDrawerListener(mDrawerToggle);
// dalam keadaan awal, saat aplikasi mulai dijalankan, item yang dipilih
// adalah indeks 0
if (savedInstanceState == null) { pilihItem(0);
}
new Data(new DbHelper(this)).insertAllWords1();
}
private void pilihItem(int position) {
// metode saat item planet dipilih; judul pada ActionBar akan // diperbarui kemudian drawer akan menutup
switch (position) { case 0:
getFragmentManager().beginTransaction().replace(R.id.frame_konten, new MainFragment(), "MainFragment").commit();
break;
case 1:
getFragmentManager().beginTransaction().replace(R.id.frame_konten, new kosaKata(), "kosaKata").commit();
break;
case 2:
getFragmentManager().beginTransaction().replace(R.id.frame_konten, new About(), "About").commit();
A-3
break; }
mDrawerList.setItemChecked(position, true);
setTitle(mNama[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} }
// Source Code SearchMethod.java
package id.frappucino;
import java.util.ArrayList;
public class SearchMethod {
private char[] x, y; // pattern, text
private int m, n; // pattern length, text length
private String matches; // string of match positions private char[] showmatches; // char array that shows matches
private int[] BmBc = new int[256]; // used by the BMH algorithm
/** searches the text yy for the pattern xx */
public void search(String yy, String xx) { setText(yy);
setPattern(xx);
horspoolSearch();
}
/** sets the text */
private void setText(String yy) {
n=yy.length();
y=yy.toCharArray();
initmatches();
}
/** sets the pattern */
private void setPattern(String xx) {
m=xx.length();
x=xx.toCharArray();
BmBc = null;
BmBc = new int[256];
horspoolPreprocess();
}
/** initializes match positions and the array showmatches */
private void initmatches() {
matches="";
showmatches=new char[n];
for (int i=0; i<n; i++)
A-4
showmatches[i]=' '; }
/** preprocessing of the pattern */
private int[] horspoolPreprocess() {
int i,j;
for (i=0; i < 256; i++){
BmBc[i]=m;
}
for (j=0; j<m-1; j++){
BmBc[x[j]] = m - 1 - j;
}
return BmBc;
}
/** searches the text for all occurences of the pattern */
private void horspoolSearch() {
int i = m-1;
int k;
k = 0;
while (i <= n-1) {
while ((k < m) && ((y[i-k] == x[m-1-k])))//jika huruf pada indeks pattern sama dengan indeks huruf pada text
{
k++;
}
if (k==m) //apabila jumlah k sama dengan jumlah pattern {
report(i-m+1); //menampilkan indeks pada string teks k++;
} else {
i = i+BmBc[y[i]];
} } }
/** reports a match */
private void report(int i) {
try {
matches += i + " ";
//Log.d("Hasil Matches", matches);
//showmatches[i] = '^';
} catch (Exception e){
} }
/** returns the match positions after the search */
public int[] getMatches() {
A-5
int i = 0, j = 0, n = matches.length();
ArrayList<String> list = new ArrayList<String>();
for(; i < n; i++) {
if(matches.charAt(i) == ' ') {
list.add(matches.substring(j, i));
j = i + 1;
} }
int[] result = new int[list.size()];
i = 0;
for(String s : list)
result[i++] = Integer.valueOf(s);
return result;
} }
// Source Code activity_main.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_marginTop="24dp"
android:ems="19"
android:hint="@string/masukkan_kata"
android:inputType="text"
android:textColorLink="@color/black"
android:textSize="20sp" />
<ListView
android:id="@+id/result"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/editText1"
android:cacheColorHint="@color/black" />
<TextView
android:id="@+id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@id/result"
android:text="Not Found"
android:layout_marginTop="20dp"
android:textSize="18sp" />
</RelativeLayout>
B-1
CURRICULUM VITAE
Data Diri
Nama : Ade Mutiara Kartika Dewi Nasution Tempat/Tanggal Lahir : Lhokseumawe/21 April 1994
Alamat Sekarang : Jl. Pasar I Gg. Jatiluhur No. 14B, Tanjungsari, Medan 20132
Alamat Orang Tua : Jl. Sudirman Gg. Mangaraja Bintang No. 02, Padangsidimpuan
Agama : Islam
Jenis Kelamin : Perempuan Nomor Hp : 082294073926
Email : [email protected]
Riwayat Pendidikan
2000 – 2006 : SD Negeri 014 Sungai Sagu, Indragiri Hulu 2006 – 2009 : SMP Negeri 1 Ujungbatu
2009 – 2012 : SMA Negeri 1 Padangsidimpuan
2012 – : S1 Ilmu Komputer Universitas Sumatera Utara, Medan
Seminar/Kursus/Workshop
2015 : Kursus Bahasa Inggris di Cambridge School of English (CaSE)
2014 : Seminar Nasional Gelora Literasi Teknologi Informasi &
Komunikasi
2014 : Workshop Fotografi Dasar VII UKM Fotografi USU 2013 : Seminar Internasional Forum Bisnis (MIBEX 2013)
Keahlian
Bahasa : Indonesia, Inggris Bahasa Pemrograman : C++
B-2
DBMS : MySQL
Multimedia : MovieMaker, Proshow
Pengalaman Organisasi
2013-2014 : Pemerintahan Mahasiswa (PEMA) Fasilkom-TI USU 2014-2015 : UKM Fotografi USU
2014-2015 : Ikatan Mahasiswa S1 Ilmu Komputer (IMILKOM) USU
45
DAFTAR PUSTAKA
Baeza-Yates, R.A. & Regnier, M. 1992. Average running time of the boyer-moore- horspool algorithm. Journal Theoretical Computer Science Vol. 92, No. 1: 19- 31.
Charras, C. & Lecroq, T. 1997. Handbook of Exact String Matching Algorithms.
Oxford University Press: United Kingdom.
Cormen, T.H., Leiserson, C.E., Rivest, R.L. & Stein, C. 1994. Introduction to Algorithms. McGraw-Hill Book Company: North America.
Effendi, D., Hartono, T. & Kurnaedi, A. 2013. Penerapan string matching menggunakan algoritma Boyer-Moore pada translator bahasa Pascal ke C.
Majalah Ilmiah Unikom Vol. 11, No. 2: 262-271.
Hastriana, E. 2010. Perbandingan algoritma string matching knuth-morris-pratt dengan boyer-moore-horspool pada simulasi pengenalan sidik jari. Skripsi.
Universitas Islam Negeri Syarif Hidayatullah.
Hasugian, J. 2006. Penggunaan bahasa alamiah dan kosa kata terkendali dalam sistem temu balik informasi berbasis teks. Jurnal Studi Perpustakaan dan Informasi Vol. 2, No. 2: 72-80.
Horspool, R.N. 1980. Practical fast searching in strings. Journal Software Practice and Experience Vol. 10: 501-506.
Knuth D.E., Morris (Jr) J.H. & Pratt V.R. 1977. Fast pattern matching in strings.
SIAM Journal on Computing Vol. 6, No.1: 323-350.
Mirabella, F.M. 2012. Variasi-variasi algoritma boyer-moore dan perbandingannya dalam pencarian string. Skripsi. Institut Teknologi Bandung.
Parno, Dharmayanti & Rahmansyah, N. 2011. Aplikasi mobile kamus istilah psikologi berbasis Android 2.2. Prosiding Psikologi, Ekonomi, Sastra, Arsitektur & Sipil (PESAT), pp. 121-128.
Saptari, J. & Purwono. 2006. Temu kembali informasi bibliografi dengan bahasa alami pada field judul dan subjek : studi efektifitas katalog induk terpasang perpustakaan UGM. Jurnal Berkala Ilmu Perpustakaan dan Informasi Vol. 3, No. 1: 1-13.
Sheik, S.S., Aggarwal, S.K., Poddar, A., Balakhrisnan, N. & Sekar, K. 2004. A fast pattern matching algorithm. Journal of Chemical Information and Computer Science Vol. 44, No. 4: 1251-1256.
Singh, R. & Verma, H.N. 2011. A fast string matching algorithm. International Journal of Computer Technology and Applications Vol. 2, No. 6: 1877-1883.
46
Singla, N. & Garg, D. 2012. String matching algorithms and their applicability in various applications. International Journal of Soft Computing and Engineering Vol. 1, No. 6: 218-222.
Tambun, E.D. 2010. Perbandingan penggunaan algoritma boyer-moore dan algoritma horspool pada pencarian string dalam bahasa medis. Skripsi. Institut Teknologi Bandung.
Wibowo, A. 2012. Peningkatan performansi sistem temu balik informasi dengan metode phrasal translation dan query expansion. Skripsi. Polteknik Negeri Batam.
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Sistem
Analisis sistem dilakukan untuk dapat memahami kebutuhan sistem dan gambaran tugas-tugas yang akan dikerjakan, sebelum membangun sistem terlebih dahulu dilakukan beberapa tahap analisis untuk mengidentifikasi segala kebutuhan yang akan diterapkan dalam sistem agar tidak terjadi kesalahan dan sistem yang dibangun akan optimal.
3.1.1 Analisis Masalah
Mengidentifikasi masalah merupakan langkah pertama yang dilakukan dalam tahap analisis sistem. Masalah dapat didefinisikan sebagai suatu pertanyaan yang diinginkan untuk dipecahkan. Masalah inilah yang menyebabkan sasaran dari sistem tidak dapat dicapai. Oleh karena itu langkah pertama yang harus dilakukan pada tahap ini adalah mengidentifikasi terlebih dahulu masalah yang terjadi (identify).
Kebutuhan masyarakat terhadap layanan teknologi berbasis IT sangat bervariatif, salah satu kebutuhan adalah kebutuhan akan ketersediaan kamus dengan berbagai kepentingan mulai dari kamus yang bersifat umum seperti kamus bahasa hingga kamus istilah-istilah khusus seperti kamus politik, kamus ekonomi maupun kamus psikologi (Parno, et al. 2011).
Seperti yang diketahui, ilmu psikologi memiliki istilah-istilah asing yang tidak diketahui oleh orang awam. Kamus istilah psikologi saat ini banyak beredar dalam bentuk buku, yang penggunaannya menyulitkan karena pengguna harus mencari arti
19
dan istilah psikologi secara manual. Disisi lain, buku sangat sulit untuk dibawa kemana-mana dan tidak dapat di-update setiap saat sesuai dengan kebutuhan dan perkembangan pada saat ini. Pencarian istilah pada buku kamus mengakibatkan kesulitan jika dilakukan secara manual karena melibatkan data yang jumlahnya banyak. Mengingat masyarakat dewasa sangat akrab dengan layanan smartphone, maka penulis berniat untuk membuat suatu aplikasi kamus pada platform Android yang memuat istilah-istilah psikologi. Dengan adanya aplikasi kamus psikologi berbasis Android ini, proses pencarian istilah-istilah psikologi akan menjadi lebih mudah dan dipastikan akan lebih cepat.
Untuk mengidentifikasi masalah yang dijelaskan di atas digunakan Fishbone Diagram (Diagram Tulang Ikan). Fishbone Diagram adalah sebuah alat visual untuk mengidentifikasi, mengeksplorasi dan secara grafik menggambarkan secara detail semua penyebab yang berhubungan dengan suatu permasalahan. Untuk lebih jelasnya mengenai Fishbone Diagram, dapat dilihat pada Gambar 3.1.
Membuat kamus istilah psikologi pada platform Android menggunakan algoritma Horspool Pengguna Sistem
Mesin
Kamus
Metode Mempunyai mobilitas
yang tinggi
Belum ada aplikasinya Pencarian kata belum
dapat dilakukan Sulitnya mendapatkan
informasi data dengan cepat
Kamus masih berbentuk buku
Kesulitan dalam mendapatkan perangkat
elektronik
Proses pencarian data sangat banyak Metode dilakukan
manual Data tidak dapat
diperbarui setiap saat
Gambar 3.1 Fishbone Diagram
Seperti yang terlihat pada Gambar 3.1 di atas, masalah utama adalah pada persegi panjang di posisi paling kanan gambar (bagian kepala) Fishbone Diagram.
Kategori masalah ditunjukkan pada empat persegi panjang yang masing-masing terhubung ke garis utama, sedangkan rincian masalah ditunjukkan dalam bentuk tanda panah horizontal pada masing-masing kategori masalah.
20
3.1.2 Analisis Kebutuhan Sistem
Dalam analisis kebutuhan sistem terdapat dua bagian penting yang harus dipenuhi, yaitu analisis kebutuhan fungsional sistem dan analisis kebutuhan non-fungsional sistem.
3.1.2.1 Analisis Kebutuhan Fungsional Sistem
Analisis kebutuhan fungsional sistem adalah analisis terhadap kebutuhan secara fungsional baik dalam aliran data ataupun informasi dan merupakan hal yang harus dimiliki oleh sistem untuk mencapai tujuannya. Berikut ini merupakan beberapa kebutuhan fungsional sistem yang akan dibangun, antara lain:
1. Sistem dapat membaca pattern yang ingin dicari pada teks yang sebelumnya telah diinput.
2. Sistem dapat memanggil dan menampilkan data berupa string yang berasal dari database Android (pada sistem ini menggunakan SQLite).
3. Sistem dapat menghasilkan arti kata dari pattern yang dicari dengan menggunakan algoritma Horspool.
4. Sistem ini merupakan aplikasi pada platform Android.
3.1.2.2 Analisis Kebutuhan Non-Fungsional Sistem
Analisis kebutuhan non-fungsional adalah suatu analisis untuk mengetahui elemen- elemen apa saja yang berhubungan dengan sistem yang sedang berjalan. Untuk mendukung kinerja sistem, sistem sebaiknya dapat berfungsi sebagai berikut:
1. Interface sistem harus mudah digunakan sehingga dapat dioperasikan dengan baik oleh pengguna.
2. Sistem dibangun dengan perangkat yang tidak mengeluarkan biaya yang besar dan dapat berjalan dengan baik pada berbagai versi sistem operasi perangkat Android.
3.1.3 Pemodelan Sistem
Pemodelan sistem dilakukan untuk memperoleh gambaran yang lebih jelas tentang objek apa saja yang akan berinteraksi dengan sistem, serta hal-hal apa saja yang harus
21
dilakukan oleh sebuah sistem sehingga sistem dapat berfungsi dengan baik sesuai dengan kegunaannya.
Pada penelitian ini digunakan UML (Unified Modeling Language) sebagai bahasa pemodelan untuk mendesain merancang sistem yang akan dibangun. UML yang digunakan antara lain use case diagram, activity diagram dan sequence diagram.
3.1.3.1 Use Case Diagram
Use Case Diagram menggambarkan kebutuhan sistem secara fungsional dengan mengidentifikasi aktor-aktor yang terlibat dan berinteraksi dengan fungsi dasar pada sistem. Use Case Diagram akan menjelaskan fungsi apa saja yang dikerjakan oleh sistem. Use Case Diagram dari sistem yang akan dibangun dapat ditunjukkan pada Gambar 3.2 berikut:
Gambar 3.2 Use Case Diagram Sistem
22
Deskripsi Use Case Menampilkan Field Pencarian pada Gambar 3.2 dapat dilihat pada Tabel 3.1 berikut.
Tabel 3.1 Deskripsi Use Case Menampilkan Field Pencarian
Name Use-case Menampilkan field pencarian
Actors Pengguna
Description Use Case ini mendeskripsikan proses menampilkan field untuk melakukan pencarian
Basic Flow Pengguna dapat memasukkan istilah yang akan dicari Alternate Flow Pengguna dapat melihat istilah yang sudah tersimpan Pre Condition -
Post Condition Sistem akan melakukan pencocokan terhadap istilah yang dicari
Pada proses Menginput Istilah, deskripsi Use Case dapat dinyatakan dalam Tabel 3.2 berikut.
Tabel 3.2 Deskripsi Use Case Menginput Istilah
Name Menginput Istilah
Actors Pengguna
Description Use Case ini mendeskripsikan proses menginputkan istilah Basic Flow Pengguna menginputkan istilah yang akan dicari
Alternate Flow Pengguna dapat kembali ke menu awal dan memilih untuk menginput istilah baru, melihat istilah yang sudah tersimpan dan melihat tentang
Pre Condition Pengguna dapat melihat menu awal
Post Condition Pengguna mengetahui arti dari istilah tersebut
23
Pada proses Menampilkan Hasil Pencarian, deskripsi Use Case dinyatakan dalam Tabel 3.3 berikut.
Tabel 3.3 Deskripsi Use Case Menampilkan Hasil Pencarian
Name Menampilkan Hasil Pencarian
Actors Pengguna
Description Use Case ini mendeskripsikan proses menampilkan hasil pencarian istilah
Basic Flow Pengguna memilih istilah yang telah ditemukan
Alternate Flow Pengguna dapat kembali ke menu awal dan memilih untuk mencari istilah baru, melihat istilah yang sudah tersimpan dan melihat tentang
Pre Condition Pengguna dapat melihat menu awal
Post Condition Pengguna mengetahui arti dari istilah tersebut
3.1.3.2 Activity Diagram
Activity Diagram merupakan bentuk khusus dari state machine yang bertujuan memodelkan komputasi-komputasi dan aliran-aliran kerja yang terjadi dalam sistem/perangkat lunak yang sedang dikembangkan. Activity Diagram menggambarkan berbagai alir aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi dan bagaimana keseluruhan aktivitas berakhir. Activity Diagram juga dapat menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi. Untuk proses pencarian istilah pada kamus psikologi menggunakan algoritma Horspool, acticity diagram dapat dilihat pada Gambar 3.3 pada halaman selanjutnya.
24
Gambar 3.3 Activity Diagram Proses Pencarian Istilah
Seperti yang terlihat pada Gambar 3.3, sistem menampilkan layout menu utama pada Kamus Istilah Psikologi di tahap awal kemudian pengguna dapat memilih untuk melakukan pencarian istilah dengan menginput istilah yang ingin dicari. Sistem merespon dengan menampilkan pattern sesuai dengan yang diinput pengguna.
Kemudian pengguna dapat memilih istilah kata yang telah ditemukan untuk melihat arti dari kata tersebut dan sistem menampilkan arti dari istilah yang dicari.
25
3.1.3.3 Sequence Diagram
Sequence Diagram digunakan untuk menggambarkan interaksi antara objek dengan proses yang terkait pada kelas diagram melalui message dalam eksekusi operation, untuk satu buah use case. Sequence membantu untuk menggambarkan data yang masuk dan keluar dari sistem, seperti yang terlihat pada Gambar 3.4 berikut.
Gambar 3.4 Sequence Diagram
Pada Sequence Diagram seperti yang terlihat pada Gambar 3.4 diatas, yang dilakukan adalah aktor mengakses menu utama untuk membuka field inputan pencarian, kemudian menginput istilah yang akan dicari lalu akan memanggil fungsi BmBc() untuk menghitung nilai pergeseran dan melakukan proses pencocokan string menggunakan algoritma Horspool. Kemudian menampilkan hasil pencarian istilah kata.
3.1.3.4 Flowchart Sistem dan Algoritma
Flowchart merupakan gambar atau bagan yang menunjukkan aliran data di dalam sistem secara logika. Flowchart sistem dapat didefinisikan sebagai bagan yang
26
menunjukkan aliran pekerjaan secara keseluruhan dari sistem. Bagan ini menjelaskan urutan-urutan dari prosedur yang ada di dalam sistem. Flowchart dari sistem yang akan dibangun dapat dilihat pada Gambar 3.5 berikut ini.
Gambar 3.5 Flowchart Sistem Pencarian Istilah Dengan Algoritma Horspool
27
Untuk flowchart fungsi proses perhitungan bad-character dan pencarian algoritma Horspool dapat dilihat pada Gambar 3.6 dan 3.7 berikut.
Gambar 3.6 Flowchart Proses Perhitungan Bad-Character
28
Gambar 3.7 Flowchart Algoritma Horspool