• Tidak ada hasil yang ditemukan

Perbandingan Algoritma Morris - Pratt dan Algoritma Horspool Pada Aplikasi Kamus Istilah Telekomunikasi Berbasis Android

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perbandingan Algoritma Morris - Pratt dan Algoritma Horspool Pada Aplikasi Kamus Istilah Telekomunikasi Berbasis Android"

Copied!
20
0
0

Teks penuh

(1)

LISTING PROGRAM

Main Activity.java

package marsupilami.kamus; import android.content.Intent; import android.os.Bundle;

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

import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager;

import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar;

import android.view.Menu; import android.view.MenuItem; import java.util.ArrayList; import java.util.List;

import javax.xml.transform.Source;

public class MainActivity extends AppCompatActivity { private Toolbar toolbar;

private TabLayout tabLayout; private ViewPager viewPager;

@Override

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

setContentView(R.layout.activity_main);

toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar);

getSupportActionBar().setDisplayHomeAsUpEnabled(false);

viewPager = (ViewPager) findViewById(R.id.viewpager); setupViewPager(viewPager);

tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setupWithViewPager(viewPager);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.menu_main, menu); return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

(2)

// automatically handle clicks on the Home/Up button, so long

Intent i = new Intent(MainActivity.this,about.class); startActivity(i);

Intent j = new Intent(MainActivity.this,source.class); startActivity(j);

}

private void setupViewPager(ViewPager viewPager) { ViewPagerAdapter adapter = new

ViewPagerAdapter(getSupportFragmentManager());

adapter.addFragment(new OneFragment(), "Morris-Pratt"); adapter.addFragment(new TwoFragments(),"Horspool"); viewPager.setAdapter(adapter);

}

class ViewPagerAdapter extends FragmentPagerAdapter { private final List<Fragment> mFragmentList = new ArrayList<>();

private final List<String> mFragmentTitleList = new ArrayList<>();

(3)

return mFragmentList.size(); }

public void addFragment(Fragment fragment, String title) { mFragmentList.add(fragment);

mFragmentTitleList.add(title); }

@Override

public CharSequence getPageTitle(int position) { return mFragmentTitleList.get(position); }

} }

OneFragment.java

package marsupilami.kamus;

/**

* Created by 752 on 10/03/2016. */

import android.database.Cursor;

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

import android.support.v4.app.Fragment; import android.util.Log;

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

import android.view.ViewGroup; import android.widget.Button;

import android.widget.CompoundButton; import android.widget.EditText;

import android.widget.ListAdapter; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.RadioButton; import android.widget.SimpleAdapter; import android.widget.Toast;

import java.util.ArrayList; import java.util.HashMap;

public class OneFragment extends Fragment implements View.OnClickListener{

Button btn2, bt_cari; EditText txt2;

ListView lv2;

ArrayList<HashMap<String, String>> list_data; HashMap<String, String> map;

(4)

String arti = "", kata = "", pat = ""; int urutan = 0;

ProgressBar pbar; boolean cek;

String TAG = "OneFragmentTAG";

public OneFragment() {

// Required empty public constructor

}

@Override

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

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) { // Inflate the layout for this fragment

View rootView = inflater.inflate(R.layout.one_fragment, container, false);

btn2 = (Button) rootView.findViewById(R.id.remove2); bt_cari = (Button) rootView.findViewById(R.id.bt_cari); txt2 = (EditText) rootView.findViewById(R.id.teks2);

lv2 = (ListView) rootView.findViewById(android.R.id.list); pbar = (ProgressBar) rootView.findViewById(R.id.progressBar); list_data = new ArrayList<HashMap<String, String>>();

btn2.setOnClickListener(this); bt_cari.setOnClickListener(this); ambildata();

return rootView;

}

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

}

@Override

public void onClick(View v) {

if (v == btn2) {

txt2.setText("");

} else if (v == bt_cari) { search();

(5)

public void search() {

helper = new DatabaseHelper(getActivity()); database = helper.getReadableDatabase();

cursor = database.query("istilah", new String[]{"kata",

"arti"}, null, null, null, null,"kata"); pat = txt2.getText().toString(); int ketemu = 0, i = 0;

urutan = 0;

morris_pratt b = new morris_pratt();

Log.d(TAG, "Masuk 1 : " + pat);

try {

Log.d(TAG, "Masuk dan Coba"); list_data.clear();

long t = System.currentTimeMillis();

if (cursor != null) {

Log.d(TAG, "Masuk IF 1"); cursor.moveToFirst(); do {

Log.d(TAG, "Masuk Lagi");

kata = cursor.getString(0); arti = cursor.getString(1);

if (pat.length() <= kata.length()) { ketemu = b.MP(pat.toUpperCase(), kata.toUpperCase());

if (ketemu == 1) {

Log.d(TAG, "Masuk Jika Ketemu"); urutan++;

map = new HashMap<String, String>(); map.put("urutan",

Integer.toString(urutan));

map.put("kata", kata); map.put("arti", arti);

list_data.add(map);

i += 1; }

}

} while (cursor.moveToNext()); }

long rt2 = (System.currentTimeMillis() - t);

if (i == 0) {

Toast.makeText(getActivity().getBaseContext(), "Kata tidak ditemukan & Running Time : " + rt2 + " ms",

Toast.LENGTH_SHORT).show(); } else {

(6)

ListAdapter adapt = new SimpleAdapter(getActivity(), list_data, R.layout.list_row, new String[]{"urutan", "kata", "arti"}, new int[]{R.id.id, R.id.kata, R.id.arti}); lv2.setAdapter(adapt);

Toast.makeText(getActivity().getBaseContext(),

"Running Time : " + rt2 + " ms", Toast.LENGTH_SHORT).show(); }

} catch (Exception e) {

Toast.makeText(getActivity().getBaseContext(), "Silahkan Masukkan Kata", Toast.LENGTH_SHORT).show();

} }

public void ambildata() { list_data.clear();

DatabaseHelper helper = new DatabaseHelper(getActivity()); SQLiteDatabase database;

database = helper.getReadableDatabase();

Cursor cursor = null;

cursor = database.query("istilah", new String[]{"Kata",

"Arti"}, null, null, null, null, null); String kata = "", arti = ""; String[]{"urutan", "Kata", "Arti"},

(7)

TwoFragments.java

package marsupilami.kamus;

/**

* Created by 752 on 10/03/2016. */

import android.database.Cursor;

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

import android.support.v4.app.Fragment; import android.util.Log;

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

import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.SimpleAdapter; import android.widget.Toast;

import java.util.ArrayList; import java.util.HashMap;

public class TwoFragments extends Fragment implements View.OnClickListener{

Button btn, btn_cari; EditText txt;

ListView lv;

ArrayList<HashMap<String, String>> list_data2; HashMap<String, String> map;

Cursor cursor = null; DatabaseHelper helper; SQLiteDatabase database;

String arti = "", kata = "", pat = ""; int urutan = 0;

ProgressBar pbar; boolean cek;

String TAG = "TwoFragmentTAG";

public TwoFragments() {

// Required empty public constructor

}

@Override

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

}

@Override

(8)

container,

Bundle savedInstanceState) { // Inflate the layout for this fragment

View rootView = inflater.inflate(R.layout.two_fragments, container, false);

btn = (Button) rootView.findViewById(R.id.remove);

btn_cari = (Button) rootView.findViewById(R.id.btn_cari); txt = (EditText) rootView.findViewById(R.id.teks1);

lv = (ListView) rootView.findViewById(android.R.id.list); pbar = (ProgressBar) rootView.findViewById(R.id.progressBar); list_data2 = new ArrayList<HashMap<String, String>>();

btn.setOnClickListener(this); btn_cari.setOnClickListener(this); ambildata();

return rootView;

}

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

}

@Override

public void onClick(View v) { if (v == btn) {

txt.setText("");

} else if (v == btn_cari) { search();

} }

public void search() {

helper = new DatabaseHelper(getActivity()); database = helper.getReadableDatabase();

cursor = database.query("istilah", new String[]{"kata",

"arti"}, null, null, null, null, "kata"); pat = txt.getText().toString(); int ketemu = 0, i = 0;

urutan = 0; HP b = new HP();

Log.d(TAG, "Masuk 1 : " + pat);

try {

Log.d(TAG, "Masuk dan Coba"); list_data2.clear();

long t = System.currentTimeMillis();

if (cursor != null) {

(9)

Log.d(TAG, "Masuk Lagi");

kata = cursor.getString(0); arti = cursor.getString(1);

if (pat.length() <= kata.length()) { ketemu = b.search(pat.toUpperCase(), kata.toUpperCase());

if (ketemu == 1) {

Log.d(TAG, "Masuk Jika Ketemu"); urutan++;

map = new HashMap<String, String>(); map.put("urutan",

Integer.toString(urutan));

map.put("kata", kata); map.put("arti", arti);

list_data2.add(map);

i += 1; }

}

} while (cursor.moveToNext()); }

long rt = (System.currentTimeMillis() - t);

if (i == 0) {

Toast.makeText(getActivity().getBaseContext(), "Kata tidak ditemukan & Running Time : " + rt + " ms",

Toast.LENGTH_SHORT).show(); } else {

Log.d(TAG, "Masuk ELSE KELUAR TOAS RUNNING TIME");

ListAdapter adapt = new SimpleAdapter(getActivity(), list_data2, R.layout.list_row, new String[]{"urutan", "kata",

"arti"},

new int[]{R.id.id, R.id.kata, R.id.arti}); lv.setAdapter(adapt);

Toast.makeText(getActivity().getBaseContext(),

"Running Time : " + rt + " ms", Toast.LENGTH_SHORT).show(); }

} catch (Exception e) {

Toast.makeText(getActivity().getBaseContext(), "Silahkan Masukkan Kata", Toast.LENGTH_SHORT).show();

} }

public void ambildata() { list_data2.clear();

DatabaseHelper helper = new DatabaseHelper(getActivity()); SQLiteDatabase database;

database = helper.getReadableDatabase();

(10)

cursor = database.query("istilah", new String[]{"Kata",

"Arti"}, null, null, null, null, null); String kata = "", arti = ""; int urutan = 0;

try {

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

urutan++;

kata = cursor.getString(0); arti = cursor.getString(1);

HashMap<String, String> map = new HashMap<String, String>();

map.put("urutan", Integer.toString(urutan) +

".");

map.put("Kata", kata); map.put("Arti", arti);

list_data2.add(map);

} while (cursor.moveToNext());

ListAdapter adapter = new

SimpleAdapter(getActivity(), list_data2, R.layout.list_row, new String[]{"urutan", "Kata", "Arti"},

new int[]{R.id.id, R.id.kata, R.id.arti}); lv.setAdapter(adapter);

}

} catch (Exception e) {

Toast.makeText(getActivity().getBaseContext(), "Data Kosong", Toast.LENGTH_SHORT).show();

}

database.close(); }

}

About.java

package com.example.yuninainggolan.kamustetun; package marsupilami.kamus;

import android.content.Intent; import android.os.Bundle;

import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar;

import android.view.Menu; import android.view.MenuItem;

public class about extends AppCompatActivity { Toolbar toolbar;

@Override

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

setContentView(R.layout.about);

(11)

setSupportActionBar(toolbar);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); }

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.about, menu); return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml.

switch (item.getItemId()) { case R.id.action_about: // source

About(); return true;

case R.id.action_help: // about

Help(); return true;

case R.id.action_settings: // source

Source(); return true; default:

return super.onOptionsItemSelected(item); }

}

public void About(){

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

}

public void Help(){

Intent j = new Intent(about.this,help.class); startActivity(j);

}

public void Source(){

Intent j = new Intent(about.this,source.class); startActivity(j);

(12)

Help.java

public class help extends AppCompatActivity { Toolbar toolbar;

@Override

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

setContentView(R.layout.help);

toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); }

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it

public boolean onOptionsItemSelected(MenuItem item) {

(13)

}

public void Help(){

Intent j = new Intent(help.this,help.class); startActivity(j);

}

public void Source(){

Intent j = new Intent(help.this,source.class); startActivity(j);

} }

Source.java

package marsupilami.kamus;

/**

* Created by Laura Angelina on 12/06/2017. */

import android.content.Intent; import android.os.Bundle;

import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar;

import android.view.Menu; import android.view.MenuItem;

public class source extends AppCompatActivity { private Toolbar toolbar;

@Override

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

setContentView(R.layout.source);

toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); }

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.source, menu); return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml.

switch (item.getItemId()) { case R.id.action_about: // about

(14)

return true;

case R.id.action_help: // help

Help(); return true;

case R.id.action_settings: // source

Source(); return true; default:

return super.onOptionsItemSelected(item); }

}

public void About(){

Intent i = new Intent(source.this,about.class); startActivity(i);

}

public void Help(){

Intent j = new Intent(source.this,help.class); startActivity(j);

}

public void Source(){

Intent j = new Intent(source.this,source.class); startActivity(j);

} }

morris_pratt.java

package marsupilami.kamus;

/**

* Created by Laura Angelina on 06/06/2017. */

public class morris_pratt { static String txt; static String pat; static char[] x; static char[] y; static int n; static int m; boolean nilai;

static int[] mpNext = new int[256];

public morris_pratt() { }

public static void main(String[] args) { x = pat.toCharArray();

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

(15)

public static void preMp() { int i = 0;

for(int j = mpNext[0] = -1; i < m; mpNext[i] = j) { while(j > -1 && x[i] != x[j]) {

j = mpNext[j]; }

++i; ++j; }

}

public int MP(String pat, String text) { x = pat.toCharArray();

y = text.toCharArray(); n = text.length(); m = pat.length(); nilai = false;

preMp(); int j = 0; int i = 0;

while(j < n) {

while(i > -1 && x[i] != y[j]) { i = mpNext[i];

}

++i; ++j;

if(i >= m) { nilai = true; i = mpNext[i]; }

}

if(nilai) {

return 1; }

return 0;

}

(16)

HP.java

package marsupilami.kamus; import java.util.ArrayList; import java.util.List;

/**

* Created by Laura Angelina on 13/06/2017. */

public class HP {

static int[] bmBc = new int[256];

public static void preBmBc(String pat, int m, int [] bmBc) {

for (int i = 0; i < 256; ++i) bmBc[i] = m;

for (int i = 0; i < m - 1; ++i) bmBc[pat.charAt(i)] = m - i - 1; }

public int search(String pat, String target) { int j;

int m = pat.length(); int n = target.length();

preBmBc(pat, m, bmBc);

j = 0;

while (j <= n - m) {

if(pat.compareTo(target.substring(j,m+j))==0) return j + 1;

//if (x[m - 1] == c && memcmp(x, y + j, m - 1) == 0) j += bmBc[target.charAt(j + m - 1)];

}

return -1; }

}

activity_main.xml

<android.support.design.widget.CoordinatorLayout

xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"

android:layout_height="match_parent" android:background="@drawable/icon_back">

<android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"

android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

<android.support.v7.widget.Toolbar android:id="@+id/toolbar"

(17)

android:layout_height="?attr/actionBarSize"

android:background="@android:color/holo_blue_dark" app:layout_scrollFlags="scroll|enterAlways"

app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

<android.support.design.widget.TabLayout android:id="@+id/tabs"

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

android:background="@android:color/holo_blue_light" app:tabGravity="fill"

app:tabMode="fixed" />

</android.support.design.widget.AppBarLayout>

<android.support.v4.view.ViewPager android:id="@+id/viewpager"

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

app:layout_behavior="@string/appbar_scrolling_view_behavior"

/>

(18)

D

AFTAR

R

IWAYAT

H

IDUP

CURRICULUM VITAE

I.

DATA PRIBADI /

Personal Identification

Nama Lengkap

:

Laura Angelina Hasibuan

Tempat /

Tanggal Lahir

:

Tembung /

17 Juli 1995

Jenis Kelamin

:

Perempuan

Agama

:

Kristen Protestan

Kebangsaan

:

Indonesia

Alamat

:

Jalan Ar-Ridho Pasar 9 Tembung

Telepon

:

+6282167167877

Motto Hidup

:

Ada keajaiban ketika kau percaya

Tinggi / Berat

:

164 cm / 54 kg

Email

:

[email protected]

II.

KESEHATAN /

Health

Tidak memiliki cacat fisik maupun mental dan tidak memiliki penyakit bawaan.

III.

KEMAMPUAN /

Capabilities

Bahasa

: Indonesia, Inggris

Bahasa Pemrograman

: Java

Database

:

Sqlite

(19)

IV.

PENDIDIKAN FORMAL /

Formal Education

[ 2013

2017 ]

“Pe

rbandingan Algoritma Morris-Pratt dan Algoritma Horspool pada Aplikasi

Kamus Istilah Telekomunikasi

berbasis Android”

S1 Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi

Universitas Sumatera Utara

[ 2010

2013 ]

SMA Swasta Teladan Medan

[ 2007

2010 ]

SMP Negeri 2 Percut Sei Tuan

[ 2001

2007 ]

SD Negeri 105292 Bandar Klippa

V.

PENDIDIKAN NON-FORMAL / Informal Education

[ 2012

2013 ]

Medica, Medan

[ 2007

2010 ]

Star Education Centre,

Medan

[ 2005

2007 ]

Prospect Learning Centre,

Medan

VI.

PRESTASI /

Achievements

1)

Sertifikasi Nasional Microsoft Office Powerpoint 2010 , Medan [2016]

VII.

SEMINAR /

Seminars

1)

Peserta Seminar Nasional Bank Indonesia , Universitas Sumatera Utara, Medan

[2016]

2)

Peserta Seminar Nasional Literasi Informasi (SENARAI) Fakultas Ilmu

Komputer dan Teknologi Informasi, Universitas Sumatera Utara, Medan [2014]

VIII.

PENGALAMAN ORGANISASI /

Organizational Experiences

(20)

IX.

PENGALAMAN KEPANITIAAN /

Committee Experiences

1)

Anggota Keamanan PMB S1 Ilmu Komputer USU [2015]

2)

Anggota Keamanan Anniversary S1- Ilmu Komputer USU [2014]

3)

Pelayan Acara Paskah Oikumene USU [2014]

4)

Panitia Pelaksana Natal Oikumene USU [2014]

5)

Anggota Kesehatan PORSENI IMILKOM USU [2014]

6)

Anggota Konsumsi Paskah Fasilkom-TI USU [2013]

X.

PENGALAMAN BEKERJA /

Working Experience

Praktik Kerja Lapangan di Kantor Wilayah Direktorat Jendral Pajak Sumatera I

[2016]

Pegawai Kantor GPIB “PNIEL” Kp. Kolam [2015

-2017]

Referensi

Dokumen terkait

Kelemahan Algoritma Knuth Morris Pratt dalam penelitian ini adalah lebih lambat dibandingkan Algoritma Boyer Moore dalam pencarian kata yang pendek karena

Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer Universitas Sumatera Utara dan selaku Dosen Pembimbing I yang telah memberikan bimbingan,

Penelitian ini bertujuan untuk mengetahui Algoritma yang lebih baik diantara Algoritma Knuth Morris Pratt dan Algoritma Boyer Moore untuk proses pencocokan

Pada tahap ini digunakan untuk mengolah data dari hasil studi literatur yang. kemudian dilakukan analisis dan perancangan

Ide dari algoritma ini adalah bagaimana memanfaatkan karakter-karakter pola yang sudah diketahui ada di dalam teks sampai terjadinya ketidakcocokkan untuk melakukan

public class PencarianFragment extends Fragment { View view ;. SQLiteOpenHelper helper ; SQLiteDatabase

Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer Universitas Sumatera Utara dan selaku Dosen Pembimbing I yang telah memberikan bimbingan,

Berdasarkan pengujian pencarian dengan menggunakan 3 kata pada masing-masing istilah diperoleh hasil rata-rata waktu untuk algoritma Horspool adalah 11.95 ms,