• Tidak ada hasil yang ditemukan

Implementasi Algoritma Rabin-Karp Pada Kamus Jawa – Indonesia Berbasis Android

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algoritma Rabin-Karp Pada Kamus Jawa – Indonesia Berbasis Android"

Copied!
12
0
0

Teks penuh

(1)

Indo_to_jawa_Fragments.java

package studio.arti.kamusjawaindonesia; import android.content.DialogInterface; import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.os.Bundle;

import android.support.design.widget.FloatingActionButton; import android.support.v4.app.Fragment;

import android.support.v7.app.AlertDialog; import android.text.Html;

import android.view.LayoutInflater; import android.view.View;

import android.view.ViewGroup; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ListView; import java.util.ArrayList; import java.util.List;

public class Indo_to_Jawa_fragment extends Fragment { View view;

private ImageButton bt_cari; private EditText et_cari;

private List<Hasil> hasilList = new ArrayList<Hasil>(); private ListView listView;

private CustomListAdapter adapter; String kata;//kata yg di inputkan

int jumlah = 0;//hitung jumlah string ditemukan double waktu = 0;

double waktuAwal=0, waktuAkhir =0;

public Indo_to_Jawa_fragment() { }

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

view = inflater.inflate(R.layout.indo_to_jawa_tab_layout, container, false);

et_cari = (EditText) view.findViewById(R.id.txt_indo_jawa); bt_cari = (ImageButton)

view.findViewById(R.id.imb_cari_indo_jawa);

(2)

@Override

public void onClick(View v) {

String pattern = et_cari.getText().toString(); kata = pattern;

waktuAwal = System.currentTimeMillis(); ReadDB(pattern);

waktuAkhir = System.currentTimeMillis(); waktu = (waktuAkhir - waktuAwal);

} });

FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.fab);

fab.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) { MunculHasil(kata, jumlah, waktu); }

});

listView = (ListView) view.findViewById(R.id.lv_hasil); adapter = new CustomListAdapter(inflater, hasilList); listView.setAdapter(adapter);

return view; }

public void MunculHasil(String getKata, int getJumah, double getWaktu) {

AlertDialog dialog = new AlertDialog.Builder(getActivity()) .setTitle("Hasil Pencarian")

.setMessage(Html.fromHtml(

"<b>" + "Karp Rabin" + "</b>" +

"<br/>Kata/String : " + getKata + "<br/>Jumlah : " + getJumah + "<br/>Waktu : " + getWaktu + ms"))

.setPositiveButton("OK", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

public void ReadDB(String getPattern) { String pattern = getPattern;

SQLiteOpenHelper helper = new DatabaseOpenHelper(getContext());

//DbHelper helper = new DbHelper(getContext()); SQLiteDatabase db;

db = helper.getReadableDatabase(); Cursor cursor = null;

hasilList.clear(); jumlah = 0;

cursor = db.rawQuery("SELECT * FROM tabel_kamus_jawa ORDER BY indonesia; ", null);

if (cursor != null) {

(3)

cursor.moveToFirst(); do {

// pengisian list try {

String ngoko = cursor.getString(1); String madya = cursor.getString(2); String inggil = cursor.getString(3); String indo = cursor.getString(4);

KR_start(pattern, indo, ngoko, madya, inggil); } catch (Exception e) {}

} while (cursor.moveToNext()); }

db.close();

listView.setAdapter(adapter); }

// Algoritma nya

static String txt; // text tersedia

static String pat;//pattern - yg maudi cari static char[] x; //

static char[] y; // static int n; // static int m; // static String ngoko; static String madya; static String inggil;

public void KR_start(String pat, String txt, String ngoko, String madya, String inggil) {

this.txt = txt; this.pat = pat; this.ngoko = ngoko; this.madya = madya; this.inggil = inggil;

x = pat.toCharArray();//conversi string suapaya ke char array y = txt.toCharArray();

n = txt.length();//panjnga txt

m = pat.length();//pnjang yg di cari KR();

}//end void kr start

public static int REHASH(int a, int b, int d, int h) { return ((((h) - (a) * d) << 1) + (b));

}

public void KR() {

int hx = 0, hy = 0, B = 3; int d, i, j;

for (d = i = 1; i < m; ++i)

d = (d << 1); // d<<1 == d*2 (2 ^ m-1) = 2^8-1 = 128 . nilai d untuk cari pergeseran nya

(4)

/* Searching */ j = 0;

while (j <= n - m) {

if (hx == hy && memcmp(x,y,j,m)==0){ Hasil h = new Hasil();

h.setNgoko(ngoko); h.setMadya(madya); h.setInggil(inggil); h.setIndo(txt); h.setPat(pat); h.setPos(j); hasilList.add(h); jumlah++;

} try {

//hy = REHASH(y[j], y[j + m], d, hy);//remove terkiri hy = ((( (hy) - (y[j]) * d) << 1)+(y[j + m])); } catch (Exception e) {}

++j;

}//end while

}//end kr

public static int memcmp(char[] x2, char[] y2, int sj, int sz) { for (int i = 0; i < sz; i++) {

if (x2[i] != y2[i + sj]) {

if ((x2[i] >= 0 && y2[i + sj] >= 0)

|| (x2[i] < 0 && y2[i + sj] < 0)) return x2[i] - y2[i];

if (x2[i] < 0 && y2[i + sj] >= 0)

}//end fragments

(5)

import android.widget.ImageButton; import android.widget.ListView; import java.util.ArrayList; import java.util.List;

public class Jawa_to_Indo_fragment extends Fragment { View view;

private ImageButton bt_cari; private EditText et_cari;

private List<Hasil> hasilList = new ArrayList<Hasil>(); private ListView listView;

private CustomListAdapter2 adapter; String kata;

int jumlah = 0; double waktu = 0;

double waktuAwal = 0, waktuAkhir = 0; public Jawa_to_Indo_fragment() {

// Required empty public constructor }

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

view = inflater.inflate(R.layout.jawa_to_indo_tab_layout, container, false);

et_cari = (EditText) view.findViewById(R.id.txt_jawa_indo); bt_cari = (ImageButton)

view.findViewById(R.id.imb_cari_jawa_indo);

bt_cari.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View v) {

String pattern = et_cari.getText().toString(); kata = pattern;

waktuAwal = System.currentTimeMillis(); ReadDB(pattern);

waktuAkhir = System.currentTimeMillis(); waktu = (waktuAkhir - waktuAwal);

} });

FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.fab);

fab.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) { MunculHasil(kata, jumlah, waktu); }

});

listView = (ListView) view.findViewById(R.id.lv_hasil); adapter = new CustomListAdapter2(inflater, hasilList); listView.setAdapter(adapter);

(6)

public void MunculHasil(String getKata, int getJumah, double getWaktu) {

AlertDialog dialog = new AlertDialog.Builder(getActivity()) .setTitle("Hasil Pencarian")

.setMessage(Html.fromHtml(

"<b>" + "Karp Rabin" + "</b>" +

"<br/>Kata/String : " + getKata + "<br/>Jumlah : " + getJumah + "<br/>Waktu : " + getWaktu + " ms"))

.setPositiveButton("OK", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

public void ReadDB(String getPattern) { String pattern = getPattern;

SQLiteOpenHelper helper = new DatabaseOpenHelper(getContext());

//DbHelper helper = new DbHelper(getContext()); SQLiteDatabase db;

db = helper.getReadableDatabase(); Cursor cursor = null;

hasilList.clear(); jumlah = 0;

cursor = db.rawQuery("SELECT * FROM tabel_kamus_jawa ; ", null);

if (cursor != null) { cursor.moveToFirst(); do {

// pengisian list try {

String ngoko = cursor.getString(1); String madya = cursor.getString(2); String inggil = cursor.getString(3); String indo = cursor.getString(4);

KR_start(pattern, ngoko, indo); KR_start(pattern, madya, indo); KR_start(pattern, inggil, indo); } catch (Exception e) {

//Toast.makeText(getContext(), "DB Belum tersedia!!", Toast.LENGTH_SHORT).show();

}

} while (cursor.moveToNext()); }

(7)

db.close();

listView.setAdapter(adapter); }

// Algoritma nya

static String txt; // text tersedia

static String pat;//pattern - yg maudi cari static char[] x;//

static char[] y;// static int n;// static int m;// static String ngoko; static String madya; static String inggil; static String indo;

public void KR_start(String pat, String txt, String indo) { this.txt = txt;

this.pat = pat; this.indo = indo;

x = pat.toCharArray();//conversi string suapaya ke char array y = txt.toCharArray();

n = txt.length();//panjnga txt

m = pat.length();//pnjang yg di cari KR();

}

public static int REHASH(int a, int b, int d, int h) { return ((((h) - (a) * d) << 1) + (b));

}

public void KR() {

int hx = 0, hy = 0, B = 3;

/* Searching */ j = 0;

while (j <= n - m) {

if (hx == hy && memcmp(x,y,j,m)==0) { Hasil h = new Hasil();

h.setNgoko(txt); h.setIndo(indo); h.setPat(pat); h.setPos(j); hasilList.add(h); jumlah++;

} try {

(8)

}

catch (Exception e) { } ++j;

}//end while

}//end public void KR

public static int memcmp(char[] x2, char[] y2, int sj, int sz) { for (int i = 0; i < sz; i++) {

if (x2[i] != y2[i + sj]) {

if ((x2[i] >= 0 && y2[i + sj] >= 0)

|| (x2[i] < 0 && y2[i + sj] < 0)) return x2[i] - y2[i];

if (x2[i] < 0 && y2[i + sj] >= 0) return 1;

if (y2[i + sj] < 0 && x2[i] >= 0) return -1;

} }

return 0; }

}//end public class fragments

(9)

Tabel ASCII

Ascii Code

Symbol

Name

48

0

(number zero)

49

1

(number one)

50

2

(number two)

51

3

(number three)

52

4

(number four)

53

5

(number five)

54

6

(number six)

55

7

(number seven)

56

8

(number eight)

57

9

(number nine)

65

A

(Capital A )

66

B

(Capital B )

67

C

(Capital C )

68

D

(Capital D )

69

E

(Capital E )

70

F

(Capital F )

71

G

(Capital G )

72

H

(Capital H )

73

I

(Capital I )

74

J

(Capital J )

75

K

(Capital K )

76

L

(Capital L )

77

M

(Capital M )

78

N

(Capital N )

79

O

(Capital O )

80

P

(Capital P )

81

Q

(Capital Q )

82

R

(Capital R )

83

S

(Capital S )

84

T

(Capital T )

85

U

(Capital U )

86

V

(Capital V )

87

W

(Capital W )

88

X

(Capital X )

(10)

B-2

90

Z

(Capital Z )

97

a

(Lowercase a )

98

b

(Lowercase b )

99

c

(Lowercase c )

100

d

(Lowercase d )

101

e

(Lowercase e )

102

f

(Lowercase f )

103

g

(Lowercase g )

104

h

(Lowercase h )

105

i

(Lowercase i )

106

j

(Lowercase j )

107

k

(Lowercase k )

108

l

(Lowercase l )

109

m

(Lowercase m )

110

n

(Lowercase n )

111

o

(Lowercase o )

112

p

(Lowercase p )

113

q

(Lowercase q )

114

r

(Lowercase r )

115

s

(Lowercase s )

116

t

(Lowercase t )

117

u

(Lowercase u )

118

v

(Lowercase v )

119

w

(Lowercase w )

120

x

(Lowercase x )

121

y

(Lowercase y )

122

z

(Lowercase z )

44

,

(Coma)

32

(Space)

90

Z

(Capital Z )

(11)

Curriculum Vitae

Arif Setiawan

Mobile: +6287766415480

E-Mail:

awane.setiawan@gmail.com

E-Mail:

a_onee15@yahoo.co.id

E-Mail:

arti_selamanya@hotmail.com

I. Personal Identification

Full Name

: Arif Setiawan

Nick Name

: Arif

Place / Date of Birth

: Banda Aceh / October, 10

th

1994

Sex

: Male

Marital Status

: Single

Nationality

: Indonesian

Address

: Jl. Dano Tondano, Lk.VIII Kel. S.M. Rejo,

Kec. Binjai Timur, Binjai North Sumatera, Indonesia 20375

Telephone

: +6287766415480

Motto

: Hidup bukan untuk hidup, tetapi untuk yang maha hidup.

II. Formal Educations

Program Studi S1 Ilmu Komputer. Fakultas Ilmu Komputer dan Teknologi Informasi.

Universitas Sumatera. Medan. 2012- 2016

Madrasah Aliyah Negeri Binjai. 2019-2012

Madrasah Tsanawiyah Negeri Binjai. 2006-2009

(12)

III. Achievements

Juara I Porseni Madrasah se kota Binjai cabang atletik lari estafet putra 1600M. 2007

Juara II Porseni Madrasah se kota Binjai cabang atletik lari sprint putra 200M. 2008

Juara II Porseni Madrasah se kota Binjai cabang atletik lari sprint putra 200M. 2010

IV. Trainings & Workshop

Training Islam Kreatif dan Ceria IX (UKMIAl-Khuarismi USU). 2012

Traning pengurus UKMI Al-Khuarizmi (UKMI Al-Khuarizmi USU). 2013

V. Organizational Experiences

Anggota Bidang LSO - IT UKMI Al-Khuwarizmi. Universitas Sumatera Utara. 2013

This curriculum vitae is prepared in valid data by my good intention to be used by any

parties needed.

Sincerely yours,

Arif Setiawan

Gambar

Tabel ASCII

Referensi

Dokumen terkait

Daya adalah laju perubahan energi. Kalau batas bawah dari waktu kita buat 0, maka batas atasnya adalah 8, dengan satuan jam. Berikut ini kita akan melihat penggunaan integral

Spesies dengan produksi serasah daun terbesar adalah Bruguiera cylindrica, yakni sebesar 1,72 g.m - Gambar 5 Hubungan antara musim (frekuensi hujan) dan produksi

Jenis penelitian ini tergolong Kualitatif dengan pendekatan penelitian yang digunakan adalah: yuridis sosiologis, adapun sumber data penelitian ini bersumber dari

Penelitian ini bertujuan untuk mengetahui aktivitas penyembuhan luka sediaan salep kombinasi ekstrak etanol daun sirih hijau ( Piper betle L.) dan minyak cengkeh ( Syzgium

2014 In Vitro Antioxidant Activity, Phenolic Compounds and Protective Effect Against DNA Damage Provided by Leaves, Stems And Flowers of Portulaca oleracea

Menurut PIC ESAP, seiring berjalannya waktu pada program ESAP, timbul berbagai permasalahan seperti peningkatan kemampuan dari para peserta berkemampuan lebih tinggi dan

a. Bidang konservasi, tingkat kesadaran terhadap lingkungan di Universiti Teknologi Mara Malaysia masih rendah. Keseharian mahasiswa di UiTM dimanjakan dengan adanya

Peneliti pada akhirnya mengasumsikan kemungkinan besar untuk penderita ISPA pada balita dikarenakan memiliki status gizi kurang sehingga akan memperlemah daya tahan