Perbandingan Algoritma Galil-Seiferas dan Algoritma Not So Naϊve Dalam Aplikasi Kamus Hukum

LISTING PROGRAM

frmMenu.vb
Public Class frmMenu
Private Sub QuitToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
QuitToolStripMenuItem.Click
Close()
End Sub
Private Sub OtoritasToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
OtoritasToolStripMenuItem.Click
frmLogin.Show()
End Sub
Private Sub HelpToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
HelpToolStripMenuItem.Click
frmHelp.Show()
End Sub
Private Sub AboutToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles

AboutToolStripMenuItem.Click
frmAbout.Show()
End Sub
Private Sub ListKamusToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
ListKamusToolStripMenuItem.Click
frmListKamus.Show()
End Sub
End Class

frmLogin.vb
Imports MySql.Data.MySqlClient
Imports System.Data
Public Class frmLogin
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
koneksi()
txtUserID.Enabled = True
txtUserID.Select()
End Sub

Private Sub cmdOpen_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdOpen.Click

Universitas Sumatera Utara

CMD = New MySqlCommand("select * from User where userID='" &
txtUserID.Text & "' and passwd='" & txtPasswd.Text & "'", Kon)
RD = CMD.ExecuteReader
RD.Read()
If RD.HasRows Then
bolLogin = True
Me.Hide()
frmMenuOto.Show()
Else
bolLogin = False
MsgBox("Login salah, periksa kembali user name dan password")
txtUserID.Focus()
End If
RD.Close()
CMD.Dispose()

End Sub
Private Sub cmdClose_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdClose.Click
Close()
End Sub
Private Sub txtUserID_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtUserID.KeyPress
If e.KeyChar = Chr(13) Then
txtPasswd.Select()
End If
End Sub
Private Sub txtUserID_TextChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles txtUserID.TextChanged
If Len(txtUserID.Text) < 10 Then
Exit Sub
End If
End Sub
Private Sub txtPasswd_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtPasswd.KeyPress
If e.KeyChar = Chr(13) Then

cmdOpen.Enabled = True
cmdOpen.Select()
End If
End Sub
End Class

frmMenuOto.vb
Public Class frmMenuOto
Private Sub KamusHukumToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
KamusHukumToolStripMenuItem.Click
frmDataKamus.Show()
End Sub
Private Sub UserToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
UserToolStripMenuItem.Click

Universitas Sumatera Utara

frmUser.Show()

End Sub
Private Sub BackToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
BackToolStripMenuItem.Click
Close()
End Sub
Private Sub PencarianStringToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
PencarianStringToolStripMenuItem.Click
frmKamusHukum.Show()
End Sub
End Class

frmNotSoNaive.vb
Imports System
Imports System.Text.RegularExpressions
Imports MySql.Data.MySqlClient
Imports System.Data
Imports System.Globalization
Public Class frmNotSoNaive

Dim Time As New DateTime
Dim x, y As String
Dim k, m, n, p, p1, p2, q, q1, q2, s, outGalil As Integer
Public Shared Function NotSoNaive(ByVal x As String, ByVal y As
String) As Integer
Dim m As Integer = x.Length()
Dim n As Integer = y.Length()
Dim k As Integer
Dim ell As Integer
Dim j As Integer = 0
MsgBox("dddddddddddddd")
If x.Substring(0, 1).Equals(x.Substring(1, 1)) Then
k = 2
ell = 1
Else
k = 1
ell = 2
End If
While j >>>> Galil Seiferas Algorithm (OK)
Dim retVal As New List(Of Integer)()

Dim M As Integer = pat.Length
Dim N As Integer = str.Length
For i As Integer = 0 To N - M
Dim j As Integer
For j = 0 To M - 1
If str(i + j) pat(j) Then
Exit For
End If
Next
If j = M Then
retVal.Add(i)
strI = strI & " " & i
End If
Next
If strI = "" Then
strI = "tidak ketemu pada string, Galil Siferas Algorithm"
End If
Return retVal.ToArray()
End Function
Sub Galil()

Dim Pattern As String = txtPattern.Text
Dim Test As String = txtString.Text
For Each m As Match In Regex.Matches(Test, Pattern)

Universitas Sumatera Utara

txtHasil.Text = String.Format("{0} occurs at position {1}",
m.Value, m.Index)
Next
End Sub
Private Sub btnQuit_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnQuit.Click
Close()
End Sub
Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnClear.Click
pb.Value = 0
lblWaktu.Text = ""
txtPattern.Text = ""
txtString.Text = ""

lblJum.Text = ""
txtHasil.Text = ""
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer2.Tick
Dim difference As TimeSpan = DateTime.Now.Subtract(time)
lblWaktu.Text = difference.Days.ToString & ":" &
difference.Hours.ToString & ":" & difference.Minutes.ToString & ":" &
difference.Seconds.ToString & ":" & difference.Milliseconds.ToString
End Sub
Public Function GS(ByVal argX As String, ByVal argY As String) As
Integer
x = argX
m = x.Length
y = argY
n = y.Length
k = 4
p = q = s = q1 = p2 = q2 = 0
p1 = 1
newP1()

Return outGalil
End Function
Private Sub newP1()
While x(s + q1) = x(s + p1 + q1)
q1 += 1
End While
If p1 + q1 >= k * p1 Then
p2 = q1
q2 = 0
newP2()
Else
If s + p1 + q1 = m Then
search(outGalil)
Else
p1 += (q1 / k + 1)
q1 = 0
newP1()
End If
End If
End Sub

Private Sub newP2()
While x(s + q2) = x(s + p2 + q2) AndAlso p2 + q2 < k * p2
q2 += 1

Universitas Sumatera Utara

End While
If p2 + q2 = k * p2 Then
parse()
ElseIf s + p2 + q2 = m Then
search(outGalil)
Else
If q2 = p1 + q1 Then
p2 += p1
q2 -= p1
Else
p2 += (q2 / k + 1)
q2 = 0
End If
newP2()
End If
End Sub
Private Sub parse()
While 1
While x(s + q1) = x(s + p1 + q1)
q1 += 1
End While
While p1 + q1 >= k * p1
s += p1
q1 -= p1
End While
p1 += (q1 / k + 1)
q1 = 0
If p1 >= p2 Then
Exit While
End If
End While
newP1()
End Sub
Private Sub search(ByRef hasil As Integer)
While p