• 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:

[email protected]

E-Mail:

[email protected]

E-Mail:

[email protected]

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

public void EventStartLevel1 (int startEventLevel1) { Application.LoadLevel (startEventLevel1);. public void EventBackHome (int backEventHome) { Application.LoadLevel

Implementasi Algoritma Pencocokan String Boyer Moore dalam pembuatan Contact Manager pada platform android.. Universitas Sumatra

Hasil yang diperoleh dari penelitian ini adalah sebuah kamus bahasa Indonesia-Karo berbasis android offline yang mampu melakukan pencarian string dan menampilkan hasil

Hasil yang diperoleh dari penelitian ini adalah sebuah kamus bahasa Indonesia-Karo berbasis android offline yang mampu melakukan pencarian string dan menampilkan hasil

Algoritma Karp-Rabin Dalam Mencari dan Mencocokkan String Pada..

public static String PassTwo(String text, long e, long n) throws UnsupportedEncodingException {. byte[] plainByte = Base64.decode(text, Base64.

public class DatabaseOpenHelper extends SQLiteAssetHelper { private static final int DATABASE_VERSION = 1;. private static final String DATABASE_NAME =

Algoritma RAITA merupakan salah satu metode model pencarian dengan mencocokan pola kata dari sebuah string dengan pola kata yang ingin dicari, proses pencocokan pola