• Tidak ada hasil yang ditemukan

Implementasi Algoritma Reverse Colussi Pada Kamus Bahasa Indonesia Karo Berbasis Android

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algoritma Reverse Colussi Pada Kamus Bahasa Indonesia Karo Berbasis Android"

Copied!
16
0
0

Teks penuh

(1)

LISTING PROGRAM

/*** UtamaActivity***/

private SearchView searchView = null;

private SearchView.OnQueryTextListener queryTextListener; SQLiteOpenHelper helper;

SQLiteDatabase db; Cursor cursor;

private List<Result> resultList = new ArrayList<Result>();

private ListView listView;

private CustomListAdapter adapter; String hh = "";

int state = 1;

double startTime, finisTime, totalTime;

long comp;

String yangdicari;

int jumlahTotal; @Override

public boolean onQueryTextSubmit(String query) { String pat = query;

totalTime = 0;

resultList.clear(); try {

helper = new

DatabaseOpenHelper(UtamaActivity.this); cursor = null; comp = 0;

yangdicari = pat; jumlahTotal = 0; String tb_name; if (state == 1) {

tb_name = "Indonesia"; } else {

tb_name = "Karo"; }

db = helper.getReadableDatabase();

//cursor = db.rawQuery("SELECT * FROM Bank Order by " + tb_name + " ASC ;", null);

//cursor = db.rawQuery("SELECT * FROM Bank where "+tb_name+ " like '%"+query+"%' Order by " + tb_name + " ASC ;", null);

cursor = db.rawQuery("SELECT * FROM Bank ORDER BY LENGTH("+tb_name+") ASC ;", null);

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

String indo; String karo; if (state == 1) {

indo = cursor.getString(1); karo = cursor.getString(2); } else {

indo = cursor.getString(2); karo = cursor.getString(1); }

(2)

startTime = System.currentTimeMillis();

RC_start(query.toLowerCase(), indo.toLowerCase(), karo.toLowerCase());

/*Result r = new Result(); r.setIndo(indo);

r.setKaro(karo); r.setPat(query); r.setPos(0); resultList.add(r); jumlahTotal++; */

finisTime = System.currentTimeMillis();

totalTime = totalTime + (finisTime-startTime);

} while (cursor.moveToNext()); }

db.close();

adapter = new

CustomListAdapter(UtamaActivity.this, resultList); listView.setAdapter(adapter); } catch (Exception e) {

}

//totalTime = finisTime - startTime;

DialogInfo("Waktu = " + totalTime + " ms\nBanyak Komparasi = " + comp +

"\nYang didapat = " + jumlahTotal); return true; }

};

searchView.setOnQueryTextListener(queryTextListener); }

return true; }

@Override

public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) {

case R.id.action_search: return false;

case R.id.action_putar: if (state == 1) { state = 2;

getSupportActionBar().setTitle("KARO-INDONESIA"); } else {

state = 1;

getSupportActionBar().setTitle("INDONESIA-KARO"); }

;

return false; default:

break; }

searchView.setOnQueryTextListener(queryTextListener); return super.onOptionsItemSelected(item);

}

public void DialogInfo(String m) {

AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Hasil Pencarian dari kata \"" + yangdicari +

"\"");

builder.setMessage(m);

(3)

DialogInterface.OnClickListener() { @Override

public void onClick(DialogInterface dialog, int which) { dialog.dismiss();

} });

builder.show();

//super.onBackPressed(); }

@SuppressWarnings("StatementWithEmptyBody") @Override

public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here.

int id = item.getItemId();

if (id == R.id.nav_bantuan) {

Intent inn = new Intent(UtamaActivity.this, BantuanActivity.class); startActivity(inn);

}

else if (id == R.id.nav_info) {

Intent inf = new Intent(UtamaActivity.this, InformasiActivity.class); startActivity(inf);

}

else if (id == R.id.nav_perpus) {

Intent i = new Intent(UtamaActivity.this, PerpustakaanActivity.class); startActivity(i);

}

else if (id == R.id.nav_saya) {

Intent in = new Intent(UtamaActivity.this, activity_tentang.class); startActivity(in);

}

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START);

return true; }

String txt; String pat; String karo; char[] x; char[] y; int n; int m;

int[][] rcBc = new int[256][256]; int[] rcGs = new int[256];

int[] h = new int[256]; int[] locc = new int[256]; int[] link = new int[256]; int[] hmin = new int[256]; int[] kmin = new int[256]; int[] rmin = new int[256];

public void RC_start(String getPat, String indo, String getKaro) { txt = indo;

pat = getPat; karo = getKaro;

(4)

y = txt.toCharArray(); n = txt.length(); m = pat.length(); RC();

}

public void preRc() {

/* Computation of link and locc */

for (int a = 0; a < 256; ++a) locc[a] = -1;

link[0] = -1;

for (int i = 0; i < m - 1; ++i) { link[i + 1] = locc[x[i]]; locc[x[i]] = i;

}

/* Computation of rcBc */

int i, j;

for (int a = 0; a < 256; ++a) for (int s = 1; s <= m; ++s) { i = locc[a];

j = link[m - s];

while (i - j != s && j >= 0) if (i - j > s)

i = link[i + 1]; else

j = link[j + 1]; while (i - j > s)

i = link[i + 1]; rcBc[a][s] = m - i - 1; }

/* Computation of hmin */ int k = 1;

int q; i = m - 1; while (k <= m) {

while (i - k >= 0 && x[i - k] == x[i]) --i;

hmin[k] = i; q = k + 1;

while (hmin[q - k] - (q - k) > i) { hmin[q] = hmin[q - k];

++q; }

i += (q - k); k = q;

if (i == m) i = m - 1; }

/* Computation of kmin */ for (int a = 0; a < 256; ++a) kmin[a] = 0;

(5)

/* Computation of rmin */ int r = 0;

for (i = m - 1; i >= 0; --i) { if (hmin[i + 1] == i) r = i + 1;

rmin[i] = r; }

/* Computation of rcGs */ i = 1;

for (k = 1; k <= m; ++k)

if (hmin[k] != m - 1 && kmin[hmin[k]] == k) { h[i] = hmin[k];

rcGs[i++] = k; }

i = m - 1;

for (j = m - 2; j >= 0; --j) if (kmin[j] == 0) { h[i] = j;

rcGs[i--] = rmin[j]; }

rcGs[m] = rmin[0];

}

public void RC() { /* Preprocessing */

try {

preRc();

} catch (Exception e) {

//Log.d("IYU:", "recok kali pun PRERC"); }

/* Searching */ int i;

int j = 0; int s = m;

boolean error = false; while (j <= n - m) { error = false; try {

while (j <= n - m && (comp++ >= 0) && x[m - 1] != y[j + m - 1]) { s = rcBc[y[j + m - 1]][s];

j += s; }

} catch (Exception e) {

//Log.d("IYU:", "recok kali pun WHILE 1"); }

i = 1; try {

for (i = 1; i < m && (comp++ >= 0) && x[h[i]] == y[j +

h[i]]; ++i) ;

} catch (Exception e) { error = true; }

if (!error) {

(6)

Result r = new Result(); r.setIndo(txt);

r.setKaro(karo); r.setPat(pat); r.setPos(j); resultList.add(r); jumlahTotal++; }

} }

s = rcGs[i]; j += s; }

}

}

/*** Result***/

public class Result { String mInd, mKaro; int pos;

String pat;

public Result() { }

public Result(String mInd, String mKaro, int mPos, String mPat) { this.mInd = mInd;

this.mKaro = mKaro; this.pos = mPos; this.pat = mPat; }

public String getIndo() { return mInd;

}

public void setIndo(String mIndo) { this.mInd = mIndo;

}

public String getKaro() { return mKaro;

}

public void setKaro(String mKaro) { this.mKaro = mKaro;

}

public int getPos() { return pos; }

public void setPos(int mPos) { this.pos = mPos;

}

public String getPat() { return pat;

}

(7)

this.pat = mPat; }

/*** CustomListAdapter***/

@Override

public View getView(int position, View convertView, ViewGroup parent) {

String first, middle, last; try {

if (inflater == null)

inflater = (LayoutInflater)

activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (convertView == null)

convertView = inflater.inflate(R.layout.list_item, null); TextView indo = (TextView)

convertView.findViewById(R.id.tv_indo); TextView karo = (TextView) convertView.findViewById(R.id.tv_karo);

// getting movie data for the row Result m = resultItems.get(position);

int pos = m.getPos();

int pLength = m.getPat().length(); String h = m.getIndo();

//Log.d("IYU:", "lokasi "+position+" isi: "+h); first = h.substring(0, pos);

//Log.d("IYU:", "first : "+first);

middle = h.substring(pos, pos + pLength); //Log.d("IYU:", "midle :"+middle);

last = h.substring(pLength + pos); //Log.d("IYU:", "last :"+last);

if (pLength == 0) indo.setText(h); else

indo.setText(Html.fromHtml(first + "<font color='#FF4081'><b>" + middle + "</b></font>" + last)); karo.setText(m.getKaro());

//Log.d("IYU:", "SUKSES"); } catch (Exception e) {

//Log.e("IYU:", "Fatal Error update list"); }

return convertView; }

}

/*** CustomListAdapterPerpustakaan***/

@Override

public View getView(int position, View convertView, ViewGroup parent) {

try {

if (inflater == null)

inflater = (LayoutInflater)

activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (convertView == null)

(8)

String s;

Result m = resultItems.get(position); s = m.getIndo().substring(0,1); indo.setText(m.getIndo()); karo.setText(m.getKaro()); huruf.setText(s.toUpperCase());

} catch (Exception e) {

Log.e("ERROR:", "Fatal Error update list"); }

return convertView; }

}

/*** DatabaseOpenHelper***/

public class DatabaseOpenHelper extends SQLiteAssetHelper{ private static final String DATABASE_NAME = "KamusKaro.db"; private static final int DATABASE_VERSION = 2;

public DatabaseOpenHelper(Context context) {

super(context, DATABASE_NAME, null , DATABASE_VERSION); }

}

/*** PerpustakaanActivity***/

@Override

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

setContentView(R.layout.activity_perpustakaan); if (getSupportActionBar() != null){

getSupportActionBar().setTitle("Perpustakaan");

getSupportActionBar().setDisplayHomeAsUpEnabled(true); }

//new StartView().execute();

listView = (ListView) findViewById(R.id.list);

adapter = new

CustomListAdapterPerpustakaan(PerpustakaanActivity.this, resultList); listView.setAdapter(adapter);

Read_Data(); }

@Override

public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId();

if (id == android.R.id.home) { this.finish();

return true; }

return super.onOptionsItemSelected(item); }

private void Read_Data() {

helper = new DatabaseOpenHelper(this); cursor = null;

String h = "Indonesia\n"; String h1 = "Karo\n";

//TextView tv = (TextView) findViewById(R.id.textView); //TextView tv1 = (TextView) findViewById(R.id.textView1);

db = helper.getReadableDatabase();

(9)

cursor = db.rawQuery("SELECT * FROM Bank ORDER BY Indonesia ASC;", null);

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

Result r = new Result();

r.setIndo(cursor.getString(1)); r.setKaro(cursor.getString(2)); resultList.add(r);

} while (cursor.moveToNext()); }

db.close(); adapter = new

CustomListAdapterPerpustakaan(PerpustakaanActivity.this, resultList); listView.setAdapter(adapter);

}

private class StartView extends AsyncTask<Void, Void, Void> { @Override

protected void onPreExecute() { super.onPreExecute();

pDialog = new ProgressDialog(PerpustakaanActivity.this); pDialog.setMessage("Tunggu");

pDialog.setCancelable(false); pDialog.show();

pDialog.setProgress(0);

}

@Override

protected Void doInBackground(Void... arg0) { Read_Data();

return null; }

@Override

protected void onPostExecute(Void result) { if (pDialog.isShowing())

pDialog.dismiss();

}

} }

/*** SplashActivity***/

@Override

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

setContentView(R.layout.activity_splash); getSupportActionBar().hide();

setSplash(); }

public void setSplash() { new Thread() {

@Override

(10)

try {

Thread.sleep(1500); }

catch (Exception e) { }

Intent i = new Intent(SplashActivity.this, UtamaActivity.class);

SplashActivity.this.finish(); startActivity(i);

} }.start(); }

}

/*** Activity_Tentang***/

public class activity_tentang extends AppCompatActivity { @Override

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

setContentView(R.layout.activity_activity_tentang); getSupportActionBar().setTitle("Tentang Saya");

getSupportActionBar().setDisplayHomeAsUpEnabled(true); }

@Override

public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId();

if (id == android.R.id.home) { this.finish();

return true; }

return super.onOptionsItemSelected(item); }

}

/*** AndroidManifest.xml***/

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yogisulaiman.myapplication2">

<application

android:allowBackup="true"

android:icon="@mipmap/ic_launcher" android:label="Kamus Indonesia-Karo" android:supportsRtl="true"

android:theme="@style/AppTheme">

<activity android:name=".MainActivity" /> <activity android:name=".SplashActivity"> <intent-filter>

<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"

/>

</intent-filter> </activity>

(11)

<activity

android:name=".UtamaActivity" android:label="INDONESIA-KARO"

android:theme="@style/AppTheme.NoActionBar"> </activity>

</application> </manifest>

/*** Activity_Informasi.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:background="@drawable/ji"

tools:context="com.yogisulaiman.myapplication2.InformasiActivity">

</RelativeLayout>

/*** List_Item.xml***/

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

android:layout_height="wrap_content" android:background="#ffffff"

android:orientation="vertical" android:padding="5dp">

<TextView

android:id="@+id/tv_indo"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Indonesia"

android:textColor="#000000" android:textSize="20sp" /> <TextView

android:id="@+id/tv_karo"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Karo"

android:textColor="#000000" android:textSize="28sp" /> </LinearLayout>

/*** List_Item_Perpustakaan.xml***/

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

android:layout_height="wrap_content" android:background="#ffffff"

android:orientation="horizontal" android:padding="5dp">

<RelativeLayout

(12)

<ImageView

android:layout_width="60dp" android:layout_height="60dp" android:layout_marginRight="20dp" android:layout_marginLeft="10dp"

android:src="@drawable/ic_brightness_1_24dp" /> <TextView

android:id="@+id/tv_huruf"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="A"

android:textColor="#FFFFFF" android:textSize="40sp"

android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> </RelativeLayout>

<LinearLayout

android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView

android:id="@+id/tv_indo"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Indonesia"

android:textColor="#000000" android:textSize="20sp" /> <TextView

android:id="@+id/tv_karo"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Karo"

android:textColor="#000000" android:textSize="28sp" /> </LinearLayout>

</LinearLayout>

/*** Nav_Header_Utama.xml***/

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

android:layout_height="200dp"

android:background="@color/colorPrimary" android:gravity="bottom"

android:orientation="vertical"

android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:theme="@style/ThemeOverlay.AppCompat.Dark"> <ImageView

android:id="@+id/imageView" android:layout_width="100dp" android:layout_gravity="center" android:layout_height="100dp"

(13)

<TextView

android:layout_width="match_parent" android:layout_height="wrap_content"

android:paddingTop="@dimen/nav_header_vertical_spacing" android:text="Kamus"

android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> <TextView

android:id="@+id/textView"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="INDONESIA-KARO" /> </LinearLayout>

/*** Activity_Utama_drawer.xml***/

<menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single">

<item

android:id="@+id/nav_bantuan" android:icon="@drawable/bantuan" android:title="Bantuan" /> <item

android:id="@+id/nav_info" android:icon="@drawable/info" android:title="Suku Karo" /> <item

android:id="@+id/nav_perpus" android:icon="@drawable/per" android:title="Perpustakaan" /> <item

android:id="@+id/nav_saya" android:icon="@drawable/me" android:title="Tentang Saya" /> </group>

</menu>

/*** Main_Menu.xml***/

<menu xmlns:tools="http://schemas.android.com/tools"

xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item

android:id="@+id/action_search"

android:icon="@android:drawable/ic_menu_search" android:title="Cari..."

app:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="always" />

<item

android:id="@+id/action_putar"

android:icon="@android:drawable/stat_notify_sync_noanim" android:title="Putar"

app:showAsAction="always" /> </menu

(14)

CURRICULLUM VITAE

Nama Lengkap

: Yogi Sulaiman

Nama Panggilan

: Yogi

Tempat / Tanggal Lahir : Namorambe / 21 Juni 1994

Jenis Kelamin

: Pria

Agama

: Islam

Warga Negara

: Indonesia

Alamat

: Jl. Karya Jaya , Namorambe

Mobile Phone

: 0878 6737 2145

E-mail

: [email protected]

PENDIDIKAN

Perguruan Tinggi

Universitas Sumatera Utara

Fakultas Ilmu Komputer dan Teknologi Informasi

Program Studi S1 Ilmu Komputer

IPK 3.46

2012 – 2016

Sekolah Menengah Atas

SMA N 1 NAMORAMBE

2009-2012

Sekolah Menengah Pertama

SMP N 1 NAMORAMBE

2006-2009

Sekolah Dasar

SD NEGERI 107406 NAMORAMBE

2000-2006

Programming: Java, C#

Database

: MySQL

Software

: Ms. Office, Adobe Photoshop , Proshow Produser

OS

: Windows

(15)

PROJEK YANG PERNAH DIKERJAKAN

Sistem Informasi DESA JATIKESUMA

- Php,Html, MySQL

Tugas Mata Kuliah Sistem Database lanjutan

Aplikasi Kamus Bahasa Indonesia-Karo dengan Metode Reverse Collusi

Java, Sqlite

Tugas Akhir Skripsi

PENGALAMAN KERJA

No

Instansi/Lembaga

Jabatan/Posisi

Tahun

1

Program Studi S1 Ilmu

Komputer Fasilkom-TI USU

Asisten Laboratorium

Pengajaran Sistem Manajemen

Database

2013-2016

2

UKMI Al-Khuwarizmi

Fasilkom-TI

Kompetensi Akademik

2013

PENGALAMAN PELATIHAN

No

.

Pelatihan

Tahun

1

Kader BNN

2010

2

Training Kewirausahaan

2011

3

Seminar Motivasai Dakwah Expo

2012

4

Academy Syiar Media

2012

5

Mentoring Akbar Universitas

2012

6

Training Islam Ceria Kreatif

2012

7

Dakwah Expo

2012

(16)

No

Organisasi

Jabatan

Tahun

1

Sahabat Beasiswa Untuk Negeri Wakil Ketua

2014

2

TRICK

Peralatan

2013

3

Dakwah Expo

PDD

2013

4

Academy Syiar Media

Tentor

2013

5

Sahur On The Road

Humas

2013

6

KPU Fasilkom TI

Dokumentasi

2013

7

Alkhuwarizmi Festival

Peralatan

2013

8

Ilkom goes To School

Konsumsi

2013

9

Dies Natalis ILKOM USU

Keamanan

2012

10

PASKIBRAKA Namorambe

Anggota

2011

11

MOS SMA N I Namorambe

Panitia

2011

12

Osis SMAN 1 Namorambe

Keagamaan

2011

SEMINAR

No

.

Seminar

Tahun

1

Seminar Nasional Literasi Informasi(SENARAI)

2014

2

Young People Of Character-The Hope of the Future

2014

Demikian riwayat hidup ini saya perbuat dengan sebenar-benarnya.

Medan, Juni 2016

Referensi

Dokumen terkait

Penulis panjatkan Puji dan syukur kehadirat Allah SWT, yang dengan rahmat dan kasih sayang-Nya penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk

Adapun media yang cocok digunakan untuk menjawab semua permasalahan diatas adalah dengan membangun aplikasi kamus berbasis android dengan menerapkan algoritma

Tujuan penelitian ini adalah Mengimplementasikan sebuah algoritma yaitu algoritma Colussi kedalam sebuah kamus biologi dan Menciptakan Aplikasi yang dapat

Jika karakter pada teks dan pattern sama dari kiri ke kanan, dan selalu sama sampai nilai indeks yang ke m-1, maka algoritma colussi akan melakukan penccokan kembali dari

Untuk membuat kamus berbasis android dapat menggunakan algoritma string matching, salah satu algoritma string matching adalah algoritma Rabin-Karp, algoritma Rabin-Karp

Sistem aplikasi kamus antonim inggris berbasis android dengan menggunakan bahasa pemrograman Java ini merupakan sistem yang mempermudah pengguna dalam pencarian

Dalam penelitian ini aplikasi dibangun dengan menggunakan bahasa pemrograman PHP dan HTML, serta menggunakan database mysql dan Firebird. Database mysql digunakan untuk proses

Kata Kunci : skripsi, online, PHP, MySQL, HTML, Java, Website, Android. Universitas