Implementasi Dan Analisis Algoritma Dynamic Markov Compression (DMC) Pada File Text

(1)

LISTING PROGRAM Kode Program Form Utama

Imports Microsoft.Office.Interop.Word Imports System.IO

Imports System.Diagnostics

Imports VB = Microsoft.VisualBasic Imports System.Xml

Imports Ionic.Zip

Imports System.Reflection Public Class frmMain

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCom.Click

Dim i As Integer Dim ln As Integer Dim sw As Stopwatch sw = Stopwatch.StartNew()

intext = System.Text.Encoding.Default.GetBytes(txtInput.Text) Call Kompresi(intext)

txtOutput.Text = "" ln = UBound(outtext) If ln < MAX_LENGTH Then For i = 0 To ln

txtOutput.Text = txtOutput.Text & Chr(outtext(i)) Next

Else

txtOutput.Text = "Isi file tidak muat pada text area" End If

sw.Stop()

txtBFakhir.Text = "0"

txtPKakhir.Text = txtOutput.Text.Length

txtWaktu.Text = sw.ElapsedMilliseconds.ToString() btnSave.Enabled = True

dlgSave.Filter = "DMC File (*.dmc)|*.dmc" MsgBox("Kompresi selesai!!")

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDecom.Click

Dim i As Integer Dim ln As Integer Dim sw As Stopwatch sw = Stopwatch.StartNew()


(2)

intext = System.Text.Encoding.Default.GetBytes(txtInput.Text) Call Dekompresi(intext)

txtOutput.Text = "" ln = UBound(outtext) If ln < MAX_LENGTH Then For i = 0 To ln

txtOutput.Text = txtOutput.Text & Chr(outtext(i)) Next

Else

txtOutput.Text = "Isi file tidak muat pada text area" End If

sw.Stop()

txtBFakhir.Text = "0"

txtPKakhir.Text = txtOutput.Text.Length

txtWaktu.Text = sw.ElapsedMilliseconds.ToString() btnSave.Enabled = True

dlgSave.Filter = " DOCX File (*.docx)|*.docx|ODT File (*.odt)|*.odt" MsgBox("Dekompresi selesai!!")

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click

Dim strfilename As String

dlgOpen.Filter = "DOCX File (*.docx)|*.docx|ODT File (*.odt)|*.odt|DMC File (*.dmc)|*.dmc"

Dim dr As Integer = dlgOpen.ShowDialog() strfilename = dlgOpen.FileName

If dr = DialogResult.OK Then txtInput.Text = ""

Dim formatfile As String = Path.GetExtension(strfilename).ToLower() If formatfile = ".txt" Then

Dim fs As FileStream

fs = New FileStream(strfilename, FileMode.Open, FileAccess.Read) Dim sr As StreamReader

sr = New StreamReader(fs)

sr.BaseStream.Seek(0, SeekOrigin.Begin) While sr.Peek() > -1

txtInput.Text = txtInput.Text & sr.ReadLine() End While

sr.Close()

btnDecom.Enabled = False btnCom.Enabled = True


(3)

ElseIf formatfile = ".odt" Then

Dim odsZipFile As ZipFile = ZipFile.Read(strfilename)

Dim contentZipEntry As ZipEntry = odsZipFile("content.xml") Dim contentStream As Stream = New MemoryStream() contentZipEntry.Extract(contentStream)

contentStream.Seek(0, SeekOrigin.Begin)

Dim contentXml As XmlDocument = New XmlDocument() contentXml.Load(contentStream)

Dim xmlnode As XmlNodeList Dim i As Integer

xmlnode = contentXml.GetElementsByTagName("text:p") For i = 0 To xmlnode.Count - 1

If i > 0 Then

txtInput.Text = txtInput.Text & " " End If

txtInput.Text = txtInput.Text & xmlnode(i).ChildNodes.Item(0).InnerText Next

contentStream.Close() btnDecom.Enabled = False btnCom.Enabled = True

ElseIf formatfile = ".doc" Or formatfile = ".docx" Then

Dim wordapp As Microsoft.Office.Interop.Word.Application = New Application()

Dim miss As Object = System.Reflection.Missing.Value Dim path As Object = strfilename

Dim readon As Object = True Dim docs As Document

docs = wordapp.Documents.Open(path, miss, readon, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss)

Dim i As Integer Dim totaltext As String totaltext = ""

For i = 0 To docs.Paragraphs.Count - 1

totaltext += docs.Paragraphs(i + 1).Range.Text.ToString().Trim() Next

wordapp.Quit()

txtInput.Text = totaltext btnDecom.Enabled = False btnCom.Enabled = True ElseIf formatfile = ".dmc" Then Dim num As Short

Dim i As Integer


(4)

num = FreeFile()

FileOpen(num, strfilename, OpenMode.Binary) fileLength = LOF(num) - 1

ReDim intext(fileLength) FileGet(num, intext) FileClose(num)

If fileLength < MAX_LENGTH Then For i = 0 To fileLength

txtInput.Text = txtInput.Text & Chr(intext(i)) Next

End If

btnDecom.Enabled = True btnCom.Enabled = False End If

Dim info As New FileInfo(strfilename) txtPKawal.Text = txtInput.Text.Length txtBFawal.Text = info.Length

btnSave.Enabled = False End If

End Sub

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click

Dim strfilename As String Dim content As String Dim ln As Integer

Dim dr As Integer = dlgSave.ShowDialog() strfilename = dlgSave.FileName

content = ""

If dr = DialogResult.OK Then

Dim formatfile As String = Path.GetExtension(strfilename).ToLower() If formatfile = ".dmc" Then

ln = UBound(outtext) For i = 0 To ln

content = content & Chr(outtext(i)) Next

FileOpen(1, strfilename, OpenMode.Output) For i = 1 To 1

Print(1, content) Next

FileClose(1)

ElseIf formatfile = ".txt" Then

File.WriteAllText(strfilename, txtOutput.Text) ElseIf formatfile = ".doc" Or formatfile = ".docx" Then


(5)

Dim wordapp = New Application Dim oDoc = wordapp.Documents.Add Dim par1 = oDoc.Content.Paragraphs.Add par1.Range.Text = txtOutput.Text

oDoc.SaveAs(strfilename) oDoc.Close()

wordapp.Quit()

ElseIf formatfile = ".odt" Then

Dim templateFile As ZipFile = ZipFile.Read("template.odt") Dim contentZipEntry As ZipEntry = templateFile("content.xml") Dim contentStream As Stream = New MemoryStream()

contentZipEntry.Extract(contentStream) contentStream.Seek(0, SeekOrigin.Begin)

Dim contentXml As XmlDocument = New XmlDocument() contentXml.Load(contentStream)

contentXml.PreserveWhitespace = True Dim xmlnode As XmlNodeList

xmlnode = contentXml.GetElementsByTagName("text:p") xmlnode(0).ChildNodes.Item(0).InnerText = txtOutput.Text templateFile.RemoveEntry("content.xml")

Dim memStream As MemoryStream = New MemoryStream() contentXml.Save(memStream) memStream.Seek(0, SeekOrigin.Begin) templateFile.AddEntry("content.xml", memStream) templateFile.Save(strfilename) contentStream.Close() memStream.Close() End If

Dim info As New FileInfo(strfilename) txtBFakhir.Text = info.Length

txtRasio.Text = Math.Round((Val(txtBFawal.Text) / Val(txtBFakhir.Text)) * 100, 2) MsgBox("Simpan file selesai!!")

End If End Sub

Private Sub btnReset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReset.Click

btnDecom.Enabled = False btnCom.Enabled = False txtInput.Text = "" txtOutput.Text = "" btnSave.Enabled = False txtBFakhir.Text = "0"


(6)

txtBFawal.Text = "0" txtPKakhir.Text = "0" txtPKawal.Text = "0" txtRasio.Text = "0" txtWaktu.Text = "0" End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

btnDecom.Enabled = False btnCom.Enabled = False txtInput.Text = "" txtOutput.Text = "" btnSave.Enabled = False txtBFakhir.Text = "0" txtBFawal.Text = "0" txtPKakhir.Text = "0" txtPKawal.Text = "0" txtRasio.Text = "0" txtWaktu.Text = "0" End Sub

Private Sub TentangToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TentangToolStripMenuItem.Click

frmTentang.ShowDialog() End Sub

Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click

Me.Close() End Sub End Sub

Private Sub frmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing

cover.Close() End Sub

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)

End Sub

Private Sub txtRasio_TextChanged(sender As Object, e As EventArgs) Handles txtRasio.TextChanged

End Sub End Class


(7)

Kode Program Class Algoritma DMC Module mainmod

Public Const MAX_LENGTH As Integer = 30000 Public intext(), outtext(), OutByteBuf As Byte Private OutPos, OutBitCount As Integer Private Const MaxBits As Integer = 24 Public Sub Kompresi(ByRef listarr() As Byte)

Dim InpPos, MinValue, MaxValue, RangValue, MidValue, Index, TopBit, One(256), Zero(256), i As Integer

Dim mChar, Bitset As Byte ReDim outtext(500)

OutPos = OutBitCount = OutByteBuf = MinValue = InpPos = 0 MaxValue = (2 ^ MaxBits) - 1

TopBit = 2 ^ (MaxBits - 1)

Do While InpPos <= UBound(listarr) mChar = listarr(InpPos)

InpPos = InpPos + 1 For i = 0 To 7

Bitset = (mChar And (2 ^ (7 - i))) And &HFF Index = (2 ^ i) - 1 + Int(mChar / (2 ^ (8 - i))) RangValue = MaxValue - MinValue

MidValue = MinValue + (RangValue * (Zero(Index) / (One(Index) + Zero(Index))))

If MidValue = MinValue Then MidValue = MidValue + 1 If MidValue = MaxValue - 1 Then MidValue = MidValue - 1 If Bitset > 0 Then

MinValue = MidValue One(Index) = One(Index) + 1 Else

MaxValue = MidValue

Zero(Index) = Zero(Index) + 1 End If

Do While (MaxValue And TopBit) = (MinValue And TopBit) Or MinValue > MaxValue - 255

If (MinValue And TopBit) = 0 Then OutByteBuf = OutByteBuf * 2 + 0 OutBitCount = OutBitCount + 1 If OutBitCount = 8 Then


(8)

outtext(OutPos) = OutByteBuf OutBitCount = 0

OutByteBuf = 0 OutPos = OutPos + 1

If OutPos > UBound(outtext) Then ReDim Preserve outtext(OutPos + 500) End If

End If Else

OutByteBuf = OutByteBuf * 2 + 1 OutBitCount = OutBitCount + 1 If OutBitCount = 8 Then

outtext(OutPos) = OutByteBuf OutBitCount = 0

OutByteBuf = 0 OutPos = OutPos + 1

If OutPos > UBound(outtext) Then ReDim Preserve outtext(OutPos + 500) End If

End If End If

MaxValue = (MaxValue And (TopBit - 1)) * 2 + 1 MinValue = (MinValue And (TopBit - 1)) * 2 If MinValue >= MaxValue Then

MaxValue = (2 ^ MaxBits) - 1 End If

Loop Next Loop

For i = MaxBits - 1 To 0 Step -1 If (MinValue And 2 ^ i) = 0 Then OutByteBuf = OutByteBuf * 2 + 0 OutBitCount = OutBitCount + 1 If OutBitCount = 8 Then

outtext(OutPos) = OutByteBuf OutBitCount = 0

OutByteBuf = 0 OutPos = OutPos + 1

If OutPos > UBound(outtext) Then

ReDim Preserve outtext(OutPos + 500) End If

End If Else

OutByteBuf = OutByteBuf * 2 + 1 OutBitCount = OutBitCount + 1 If OutBitCount = 8 Then


(9)

outtext(OutPos) = OutByteBuf OutBitCount = 0

OutByteBuf = 0 OutPos = OutPos + 1

If OutPos > UBound(outtext) Then

ReDim Preserve outtext(OutPos + 500) End If

End If Next

Do While OutBitCount > 0

OutByteBuf = OutByteBuf * 2 + 1 OutBitCount = OutBitCount + 1 If OutBitCount = 8 Then

outtext(OutPos) = OutByteBuf OutBitCount = 0

OutByteBuf = 0 OutPos = OutPos + 1

Public Sub Dekompresi(ByRef listarr() As Byte) Dim InpPos As Integer

Dim InBitPos As Integer Dim MinValue As Integer Dim MaxValue As Integer Dim RangValue As Integer Dim MidValue As Integer Dim Value As Integer Dim mChar As Byte Dim i As Integer Dim Index As Integer Dim EOF_State As Boolean Dim TopBit As Integer Dim One(256) As Integer Dim Zero(256) As Integer ReDim outtext(500) OutPos = 0

OutBitCount = 0 OutByteBuf = 0 MinValue = 0

MaxValue = (2 ^ MaxBits) - 1 TopBit = 2 ^ (MaxBits - 1) InpPos = 0

Value = ReadBitsFromArray(listarr, InpPos, InBitPos, MaxBits) Index = -1

For i = 0 To 256 One(i) = 1


(10)

Zero(i) = 1 Next

Do

mChar = 0 For i = 0 To 7

Index = (1 * (2 ^ i)) - 1 + mChar RangValue = MaxValue - MinValue

MidValue = MinValue + RangValue * (Zero(Index) / (One(Index) + Zero(Index)))

If MidValue = MinValue Then MidValue = MidValue + 1 If MidValue = MaxValue - 1 Then MidValue = MidValue - 1 If Value >= MidValue Then

mChar = (2 * mChar) + 1 MinValue = MidValue One(Index) = One(Index) + 1 Else

mChar = 2 * mChar MaxValue = MidValue

Zero(Index) = Zero(Index) + 1 End If

Do While (MaxValue And TopBit) = (MinValue And TopBit) Or MinValue > MaxValue - 255

If InpPos <= UBound(listarr) Then

Value = (Value And (TopBit - 1)) * 2 + ReadBitsFromArray(listarr, InpPos, InBitPos, 1)

MaxValue = (MaxValue And (TopBit - 1)) * 2 + 1 MinValue = (MinValue And (TopBit - 1)) * 2

If MinValue >= MaxValue Then MaxValue = (2 ^ MaxBits) - 1 Else

EOF_State = True Exit Do

End If

Call AddmCharToArray(outtext, OutPos, mChar) Loop

ReDim Preserve outtext(OutPos - 1) End Sub

Private Sub AddBitsToouttext(ByRef Number As Integer) OutByteBuf = OutByteBuf * 2 + Number

OutBitCount = OutBitCount + 1 If OutBitCount = 8 Then

outtext(OutPos) = OutByteBuf OutBitCount = 0

OutByteBuf = 0 OutPos = OutPos + 1


(11)

If OutPos > UBound(outtext) Then ReDim Preserve outtext(OutPos + 500) End If

End If End Sub

Private Function ReadBitsFromArray(ByRef FromArray() As Byte, ByRef FromPos As Integer, ByRef FromBit As Integer, ByRef NumBits As Integer) As Integer

Dim i As Integer Dim Temp As Integer For i = 1 To NumBits

Temp = Temp * 2 + (-1 * ((FromArray(FromPos) And 2 ^ (7 - FromBit)) > 0)) FromBit = FromBit + 1

If FromBit = 8 Then

If FromPos + 1 > UBound(FromArray) Then Do While i < NumBits

Temp = Temp * 2 i = i + 1

Loop

FromPos = FromPos + 1 Exit For

End If

FromPos = FromPos + 1 FromBit = 0

End If Next

ReadBitsFromArray = Temp End Function

Private Sub AddmCharToArray(ByRef ToArray() As Byte, ByRef ToPos As Integer, ByRef mChar As Byte)

If ToPos > UBound(ToArray) Then ReDim Preserve ToArray(ToPos + 500) ToArray(ToPos) = mChar

ToPos = ToPos + 1 End Sub


(12)

CURRICULUM VITAE

Nama : Fiktaruddin

Tempat/Tanggal Lahir : Medan, 15 Maret 1991

Agama : Islam

Alamat Sekarang : Jl. Rajawali No.23F Medan Sunggal

Alamat Orang Tua : Jl. Medan-B.Aceh, Simp.Mulieng Aceh Utara Telp/ Hp : 081376278380

Email : udininthecity@gmail.com

Riwayat Pendidikan

2006 – 2009 : SMA Al-Azhar Medan

2003 – 2006 : SMP Negeri 1 Simp.Mulieng, Syamtalira Aron 1997 – 2003 : SD Negeri 1 Simp.Mulieng, Syamtalira Aron

Pengalaman Organisasi dan Kegiatan Ilmiah

 Anggota di bagian Biro Kesekretariatan Ikatan Mahasiswa S1 Ilmu Komputer (IMILKOM), 2010-2012

 Praktek Kerja Lapangan di Bank Sumut Cabang Pembantu Setia Budi Medan, Juli-Agustus 2012


(13)

Daftar Pustaka

[1] Nurjaman, Yusup. 2011. Penerapan Metode Pembelajaran CS Unplugged Text Compression Untuk Meningkatkan Hasil Belajar Siswa Pada materi Dasar Pemrograman. Skripsi. Indonesia: Universitas Pendidikan Indonesia.

[2] Pratama, Andre. 2010. Studi Perbandingan Kinerja Algoritma Kompresi Lempel Ziv 77, Lempel Ziv 78, Dan Lempel Ziv Welch Pada File Text. Skripsi. Medan, Indonesia: Unversitas Sumatera Utara.

[3] Putra, Darma. 2010. Pengolahan Citra Digital. Yogyakarta: penerbit Andi. [4] Razi, Fahrur. 2009. Analisis Pengaruh Panjang Bit Kode Pada Kinerja

Program Kompresi Yang Menggunakan Algoritma Lempel Ziv Welch (LZW). Skripsi. Medan, Indonesia: Universitas Sumatera Utara.

[5] Salomon, David. 2004. Data Compression – The Complete Reference. Edisi 3. New York. Penerbit: Springer.

[6] Santi, Ririani. 2010. Perancangan Perangkat Lunak Kompresi File Citra Dengan Menggunakan Algoritma Run Length Encoding (RLE). Skripsi. Medan, Indonesia: Universitas Sumatera Utara.

[7] Sarifah. 2010. Analisis Kinerja dan Implementasi Algoritma Kompresi Arithmetic Coding Pada File Text dan Citra Digital. Skripsi. Medan, Indonesia: Universitas Sumatera Utara.

[8] Sarjono, Nessia Kartika. 2010. Analisis Model Rantai Markov Untuk Pemilihan Universitas Favorit Pilihan Siswa SMA di Bogor. Skripsi. Indonesia: Universitas Binus.

[9] Sutoyo,T., Mulyanto,E., Dwi,O. & Wijanarto. 2009. Teori Pengolahan Citra Digital. Yogyakarta: Andi.

[10] Sihombing, Wira Nov Kurnia. 2010. Implementasi Algoritma Kompresi Deflate Pada Data. Skripsi. Medan, Indonesia: Universitas Sumatera Utara.

[11] Taryani, Yayan. 2008. Kompresi Citra Menggunakan Algoritma Dynamic Markov Compression (DMC). Skripsi. Indonesia: Universitas Komputer Indonesia.


(14)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

Setelah membaca bab ini maka pembaca akan memahami tentang analisis sistem, analisis masalah, analisis persyaratan, usecase, activity diagram, sequence diagram, flowchart, perancangan antar muka.

3.1. Analisis Sistem

Analisis sistem merupakan tahap awal dalam sebuah penelitian untuk memahami sesuatu yang dibutuhkan sistem dan menggambarkan proses-proses yang ada di dalam sistem untuk menghasilkan keluaran yang sesuai dengan kebutuhan user. Pada tahapan ini memilih kebutuhan yang paling sesuai untuk sistem yang sangat penting dalam pengembangan sistem tersebut.

3.1.1. Analisis Masalah

Analisis masalah yang akan dilakukan adalah bagaimana cara mengkompresi dan mendekompresi file text dengan format .docx dan .odt dengan menggunakan algoritma Dynamic Markov Compression (DMC).

Analisis masalah digambarkan dengan Diagram Ishikawa (fishbone Diagram) berikut ini. Bagian kepala atau segiempat yang berada di sebelah kanan merupakan masalah. Sementara di bagian tulang-tulangnya merupakan penyebab.


(15)

Metode

Material Machine/tools

User

Kompresi Data

Dynamic Markov Compression

Visual Basic.Net

File .docx dan odt sebagai Input awal

Ketidakpuasan user terhadap

Ukuran file text

PictureBox, chart, pop-up, Menu menerima input

Menu Main, Menu help, about

Gambar 3.1 Diagram Ishikawa Untuk Analisa Masalah

3.1.2. Analisis Persyaratan

Analisis Persyaratan pada suatu sistem terdiri dari 2 (dua) macam yaitu analisis persyaratan fungsional dan analisis persyaratan non-fungsional.

3.1.2.1. Persyaratan Fungsional

Persyaratan fungsional adalah aktivitas layanan yang harus diberikan oleh sebuah sistem. Berikut adalah fungsi-fungsi yang dapat dikerjakan oleh sistem.

1. Masukan yang berupa file text yaitu yang memiliki format .docx dan .odt. 2. Sistem dapat melakukan proses kompresi dan dekompresi dengan algoritma

Dynamic Markov Compression (DMC)

3. Sistem dapat menampilkan hasil perubahan file text setelah di kompresi melalui panjang karakter dan rasio

3.1.2.2. Persyaratan Non-Fungsional

Persyaratan non-fungsional berkaitan dengan fitur, karakteristik, dan batasan lainnya yang menentukan apakah sistem memuaskan atau tidak. Untuk membantu kinerja sistem secara lebih baik, terdapat kebutuhan non-fungsional sistem yaitu:

1. Tampilan antarmuka sistem dapat dimengerti oleh user atau pengguna sistem. 2. Efektifitas dan efisiensi dapat terlihat dari waktu respon antara pengguna


(16)

3. Sistem yang nantinya telah dibuat dapat dikembangkan dengan mudah sehingga sistem dapat tetap digunakan di masa yang akan datang.

4. Aplikasi yang dibangun tidak memerlukan biaya tambahan karena tidak memerlukan perangkat tambahan pendukung seperti perangkat keras pendukung atau layanan internet dan lain sebagainya.

3.2. Pemodelan Sistem 3.2.1. Use Case Diagram

Use case diagram ialah suatu diagram yang merupakan penggambaran teknik untuk merekam persyaratan fungsional suatu sistem. Use case berfungsi untuk menggambarkan interaksi antara pengguna sistem dengan sistem itu sendiri kemudian memberi suatu penjelasan bagaimana sistem tersebut digunakan. Berikut ini merupakan use case diagram dari sistem yang dirancang dan dibangun oleh penulis yang dapat dilihat pada gambar 3.2.

Sistem Kompresi dan

Dekompresi DMC

User

Kompresi

Ubah karakter

Nilai minValue <<extend

s>>

Dekompresi

<<extends>>

Ubah ASCII <<

extend s>>

Ubah karakter

Nilai maxValue

<<extends>>

Ubah ASCII <<e

xten ds>>

<<extend s>>


(17)

Spesifikasi Use Case untuk Kompresi DMC terdapat dalam diagram use case dijabarkan pada Tabel 3.1.

Tabel 3.1 Spesifikasi Use Case untuk Kompresi DMC

Name Kompresi

Actors User

Description User menginputkan file text untuk diproses dengan algoritma DMC

Preconditions Aplikasi dalam keadaan standby siap untuk menerima masukkan file text

Post Conditions Aplikasi akan menampilkan hasil dari algoritma DMC Success Scenario 1. User telah menginputkan file dengan format .odt/.docx

2. User mengakses tombol Kompresi

3. Sistem akan menampilkan hasil dari kompresi dengan algoritma DMC

Alternative Flows -

Spesifikasi Use Case untuk Dekompresi DMC yang terdapat dalam diagram use case dijabarkan pada Tabel 3.2.

Tabel 3.2 Spesifikasi Use Case untuk Dekompresi DMC

Name Dekompresi

Actors User

Description User menginputkan file text untuk diproses dengan algoritma DMC

Preconditions Aplikasi dalam keadaan standby siap untuk menerima masukkan file text

Post Conditions Aplikasi akan menampilkan hasil dari algoritma DMC Success Scenario 1. User telah menginputkan file dengan format .odt/.docx

2. User mengakses tombol Dekompresi

3. Sistem akan menampilkan hasil dari dekompresi dengan algoritma DMC


(18)

3.2.2. Activity Diagram

Activity diagram ialah diagram yang berfungsi untuk menggambarkan logika procedural, jalan kerja suatu sistem. Diagram ini hampir memiliki peran yang sama dengan diagram alir yang mana memungkinkan siapapun yang melakukan proses untuk dapat memilih urutan dalam melakukan kinerja sistem sesuai yang diinginannya. a. Activity Diagram Untuk Kompresi DMC

Pada activity diagram ini proses diawali dengan menginputkan file text kemudian memilih tipe data yang dilakukan oleh user. Setelah di inputkan sistem membaca isi file tersebut, kemudian user memproses dengan cara menekan tombol kompresi. Setelah itu dapat kita lihat hasil file kompresi tersebut. Kemudian Sistem dapat menyimpan file yang telah diproses. Activity diagram untuk proses Kompresi DMC dapat dilihat pada Gambar 3.3.

User menekan tombol open Open dialog

Baca file

User

Sistem

User menekan tombol simpan Pilih file text .docx || .odt

Sistem menampilkan isi file

User menekan tombol Kompresi

Kompresi DMC

Sistem mengkompresi file yang dipilih

Menyimpan berkas terkompresi ke direktori


(19)

b. Activity Diagram Untuk Dekompresi

Pada activity diagram ini proses diawali dengan menginputkan file text yang telah di kompresi yang dilakukan oleh user. Setelah di inputkan sistem membaca isi file tersebut, kemudian user memproses dengan cara menekan tombol dekompresi. Setelah itu dapat kita lihat hasil file dekompresi tersebut. Kemudian Sistem dapat menyimpan file yang telah diproses dan memilih tipe datanya. Activity diagram untuk proses Dekompresi DMC dapat dilihat pada Gambar 3.3.

User menekan tombol open Open dialog

Baca file

User

Sistem

User menekan tombol simpan Input file yang terkompresi

Sistem menampilkan isi file

User menekan tombol Dekompresi

Dekompresi DMC

Sistem mendekompresi file

Sistem Menyimpan User memilih .docx/.odt


(20)

3.2.3. Sequence Diagram

Sequence diagram merupakan diagram yang mengambarkan bagaimana objek-objek saling bersinergi dalam beberapa kebiasaan (behavior). Sequence diagram menunjukkan sejumlah contoh maupun pesan yang berada atau melewati objek-objek tersebut didalam use case. Berikut ini merupakan gambaran dari sequence diagram dari sistem yang telah dirancang dan dibangun oleh penulis yang dapat dilihat pada Gambar 3.5 dan Gambar 3.6.

: Kompresi Berkas : Input Berkas

Input berkas *.docx || *.odt

: Baca Isi Berkas

Baca isi berkas

: Simpan Berkas Terkompresi

Berkas *.dmc

Gambar 3.5 Sequence Diagram Kompresi DMC

: Dekompresi Berkas : Input Berkas

Pilih berkas *.docx || *.odt

: Baca Isi Berkas

Baca isi berkas

: Simpan Berkas Terdekompresi

Input berkas *.dmc


(21)

3.2.4. Flowchart

3.2.4.1Flowchart Kompresi

Start

Buka File

End Rasio Start

Input File .docx || .odt

Ubah Karakter menjadi ASCII

Simpan File Hasil Kompresi

File Menghitung nilai

minValue

Ubah nilai minValue ke ASCII, ASCII

ubah ke karakter

Gambar 3.7 Flowchart Kompresi

Gambar 3.7 merupakan proses kompresi yang terjadi dengan menginputkan file .docx atau .odt kemudian terjadi proses kompresi file, dan menghasilkan hasil kompresi. Setelah itu melakukan proses simpan file.


(22)

3.2.4.2Flowchart Dekompresi

Start

Buka File

End Rasio

Start

Input File .dmc

Simpan File .docx || .odt Ubah Karakter menjadi ASCII

Hasil Dekompresi

File Menghitung nilai

maxValue

Ubah nilai maxValue ke ASCII, ASCII

ubah ke karakter

Gambar 3.8 Flowchart Dekompresi

Gambar 3.8 merupakan proses dekompresi yang terjadi dengan menginputkan file .dmc kemudian terjadi proses dekompresi file, dan menghasilkan hasil dekompresi. Setelah itu melakukan proses simpan file.


(23)

3.3 Perancangan Antar Muka

Antarmuka merupakan bentuk tampilan grafis yang berhubungan langsung dengan pengguna (user). Perancangan antarmuka akan disesuaikan dengan kebutuhan dan software yang digunakan. Sistem ini dirancang dan dibangun dengan bahasa pemrograman vb.Net dengan software Microsoft Visual Studio. Antar muka terdiri dari form cover,form utama, form help, dan form about.

3.3.1 Form Interface Cover

Pada form Menu utama sistem dapat menekan tombol masuk yang tersedia. Tampilan rancangan form Menu Utama dapat dilihat pada gambar 3.9.

X

Aplikasi DMC

Implementasi dan Analisis Algoritma Dynamic Markov Compression (DMC) pada File Text

Lambang USU

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2014

1

2

NAMA NIM

(DMC)


(24)

Komponen yang dipakai ntuk membangun antar muka form Menu Utama pada gambar 3.9 dapat dilihat pada tabel 3.3 berikut:

Tabel 3.3 Rincian Rancangan Form Interface Cover

No. Tipe Teks Nama Keterangan

1. Button (DMC) button1 tombol untuk masuk ke

form berikutnya

2. PictureBox - pictureBox1 menampilkan judul,

nama, nim, dan logo usu yang berupa gambar

Pada tabel 3.3 merupakan penjelasan dari komponen-komponen yang dipakai untuk membangun antar muka form cover

3.3.2 Interface Form Menu Utama

Pada form menu utama akan di inputkan file text yang nantinya akan di proses kompresi dan dekompresi dengan algoritma DMC.

X __

File About Help

Kompresi dan Dekompresi Menggunakan Algoritma DMC

Open

Besar File (Byte)

Save Kompresi Dekompresi Reset Panjang Karakter

Besar File (Byte) Panjang Karakter

Rasio File (%) Durasi Kerja (ms)

1 2 3

4

14

9 10 11 12 13

5 6 7 8 15 16 17 18 19 21 20 22

Gambar 3.10 Interface Form Menu Utama

Komponen yang dipakai untuk membangun antar muka form Menu Utama pada gambar 3.10 dapat dilihat pada tabel 3.4 berikut:


(25)

Tabel 3.4 Rincian Rancangan Form Interface Menu Utama

No Tipe Teks Nama Keterangan

1. MenuStrip File MenuStrip1 Terdapat beberapa sub menu 2. MenuStrip About MenuStrip2 Terdapat submenu untuk

beralih ke form About

3. MenuStrip Help MenuStrip3 Terdapat submenu untuk beralih ke form help

4. TextBox - txtInput untuk menampilkan isi file

text yang di pilih 5. Label Besar File (Byte) label1 -

6. Label Panjang Karakter label2 -

7. TextBox - txtBFawal Menampilkan besar file

8. TextBox - txtPKawal Menampilkan Panjang

karakter

9. Button Open btnOpen Untuk menginputkan file text

yang dipilih

10. Button Save btnSave Untuk menyimpan hasil file text yang di kompresi atau dekompresi

11. Button Kompresi btnCom Untuk menjalankan proses kompresi

12. Button Dekompresi btnDecom Untk menjalankan proses dekompresi

13. Button Reset btnReset Untuk mengulang proses

mulai dari awal

14. TextBox - txtOutput Untuk menampilkan hasil file

text yang telah di kompresi atau dekompresi


(26)

No Tipe Teks Nama Keterangan 15. Label Besar File (Byte) label3 -

16. Label Panjang Karakter label4 -

17 Label Rasio File (%) label6 -

18 Label Durasi Kerja (ms) label5 -

19 TextBox - txtBFakhir Untuk menampilkan besar

file yang setelah diproses

20 TextBox - txtPKakhir Untuk menampilkan panjang

karakter yang setelah diproses

21 TextBox - txtRasio Untuk menampilkan rasio file

setelah diproses

22 TextBox - txtWaktu untuk menampilkan durasi

kerja setelah diproses

Pada tabel 3.4 merupakan penjelasan komponen-komponen yang dipakai untuk membangun rancangan Form Menu Utama.


(27)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

Setelah membaca bab ini maka pembaca akan memahami pengertian tentang implementasi sistem, pengujian sistem, hasil pengujian algoritma DMC pada file text. 4.1 Implementasi Sistem

Setelah tahap analisis dan perancangan sistem, selanjutnya akan dilakukan tahap implementasi dan pengujian terhadap sistem yang telah dibangun. Implementasi sistem harus sesuai dengan analisis dan perancangan sistem. Penjelasan tentang implementasi sistem dilakukan untuk mengetahui hasil dari aplikasi yang dirancang, dan pengujian sistem dilakukan untuk membuktikan kebenaran proses kompresi dan dekompresi yang berjalan pada sistem.

Sistem ini menggunakan algoritma DMC untuk mengkompresi file text yaitu berformat .docx dan .odt. Setelah dilakukan kompresi, kemudian sistem akan menampilkan keterangan file text yang telah terkompresi. Misalnya ukuran citra awal yang terkompresi, waktu yang dibutuhkan untukproses kompresi, rasio awal dan rasio akhir. Berikut adalah proses perhitungan untuk kompresi file.

Misalkan kata yang akan dimampatkan adalah “ILMU KOMPUTER”. Maka dilakukan pendataan Nilai ASCII dari “ILMU” dimana I=73, L=76, M=77, U=85, Spasi=32, K=75, O=79, M=77, P=80, U=85, T=84, E=69, R=82.


(28)

Bit Set = (mChar And (2 ^ (7 - i))) And &HFF

ASCII

0 1 2 3 4 5 6 7 128 64 32 16 8 4 2 1

I 73 0 64 0 0 8 0 0 1

L 76 0 64 0 0 8 4 0 0

M 77 0 64 0 0 8 4 0 1

U 85 0 64 0 16 0 4 0 1

32 0 0 32 0 0 0 0 0

K 75 0 64 0 0 8 0 2 1

O 79 0 64 0 0 8 4 2 1

M 77 0 64 0 0 8 4 0 1

P 80 0 64 0 16 0 0 0 0

U 85 0 64 0 16 0 4 0 1

T 84 0 64 0 16 0 4 0 0

E 69 0 64 0 0 0 4 0 1

R 82 0 64 0 16 0 0 2 0

Index = (2 ^ i) - 1 + Int(mChar / (2 ^ (8 - i))) 0 1 2 3 4 5 6 7 0 1 4 9 19 40 81 163 0 1 4 9 19 40 82 165 0 1 4 9 19 40 82 165 0 1 4 9 20 41 84 169 0 1 3 8 17 35 71 143 0 1 4 9 19 40 81 164 0 1 4 9 19 40 82 166 0 1 4 9 19 40 82 165 0 1 4 9 20 41 83 167 0 1 4 9 20 41 84 169 0 1 4 9 20 41 84 169 0 1 4 9 19 39 80 161 0 1 4 9 20 41 83 168

Setelah itu mencari/menampilkan MaxValue dan MinValue.

MaxValue

0 1 2 3 4 5 6 7

16777215 8388608 8388608 8388611 8388613 8388613 8388627 8388637 8388637 11184919 11184919 8699401 14084779 11392343 12014943 12246685 12710165 9764364 9764364 16214703 13729183 13729183 10681151 8817010 8817010 8568458 8568458 8409385 8409385 11292287 11292287 9256096


(29)

9256096 9086413 16188095 15598975 11074080 8811632 11111623 13173449 8648548 16004269 15231323 13384424 10306260 10306260 12627679 8478143 8478143 15822007 14866799 12896773 9519585 9519585 9519585 9047823 9047823 8656944 8656944 16634495 14506378 12235541 12235541 9733918 9733918 9546296 9546296 9396199 15465727 12619423 8824352 12673031 8877956 8532949 8532949 16225471 14570239 11521630 11521630 9997326 9997326 9827959 9827959 9686820 10385703 9564527 9564527 9071822 9971247 9516441 9516441 9131605 12693883 15631639 14486063 9547332 9547332 9370949 9370949 9219763 13298495 11437746 10470499 16655135

MinValue

0 1 2 3 4 5 6 7

0 0 4194304 0 0 4194306 8 16

4194326 88 3728365 3728365 7456730 2554944 231740 463480 926960 926960 3136311 6272622 6272622 8136762 5088728 5088728 7574249 7574249 7773091 7773091 8282126 3147520 7219904 7219904 8238000 8238000 7138304 6549184 6549184 6549184 2061824 4123648 4123648 8247296 4149932 4149932 4149932 5381198 4747576 3224740 5851442 6628552 1076616 1076616 1076616 2483778 6001682 2012008 5529916 5529916 6224811 8122028 8122028 1290940 5981483 5981483 7857700 7857700 8195419 8195419 6926816 6926816 6926816 5082880 5082880 5082880 5710165 6063444 2375804 2375804 6948717 6948717 7964920 7964920 8275426 8275426 6279824 6279824 7593705 7593705 4058768 4058768 4898410 4898410 2816424 5754176 4608600 4608600 7077966 7077966 7405535 7405535 2134000 2134000 4268000 115128 Kemudian dengan mendapatkan nilai MaxValue dan MinValue setelah itu mencari RangValue dengan cara MaxValue-MinValue.

RangValue = MaxValue – MinValue

0 1 2 3 4 5 6 7

16777215 8388608 4194304 8388611 8388613 4194307 8388619 8388621 4194311 11184831 7456554 4971036 6628049 8837399 11783203 11783205 11783205 8837404 6628053 9942081 7456561 5592421 5592423 3728282 1242761 994209 795367 636294 127259 8144767 4072383 2036192 1018096 848413 9049791 9049791 4524896 2262448 9049799 9049801 4524900 7756973 11081391 9234492 6156328 4925062 7880103 5253403 2626701 9193455 13790183 11820157 8442969 7035807 3517903 7035815 3517907 3127028 2432133 8512467 6384350 10944601 6254058 3752435 1876218 1688596 1350877 1200780 8538911 5692607 1897536 7590151 3795076 3450069 2822784 10162027 12194435 9145826 4572913 3048609 2032406 1863039 1552533 1411394 4105879 3284703 1970822 1478117


(30)

5912479 5457673 4618031 4233195 9877459 9877463 9877463 4938732 2469366 2292983 1965414 1814228 11164495 9303746 6202499 16540007 Setelah tu mencari MidValue dengan cara seperti berikut.

MidValue = MinValue + (RangValue * (Zero(Index) / (One(Index) + Zero(Index))))

0 1 2 3 4 5 6 7

8388608 4194304 6291456 4194306 4194306 6291460 4194318 4194326 6990533 3728365 8699401 7042389 9666080 8446543 6123342 6355082 9764364 3136311 8107351 13729183 8136762 10932972 8817010 7574249 8568458 7773091 8409385 8282126 8345756 7219904 9256096 8238000 9086413 8379402 11663200 11074080 8811632 7680408 6586724 8648548 8002134 10463574 13384424 10306260 5381198 7351223 10000978 5851442 8149805 8926916 12896773 9519585 2483778 6001682 8640109 5529916 8656944 6224811 8352927 14506378 9034078 5981483 9733918 7857700 9546296 8195419 9396199 9129359 12619423 8824352 7875584 8877956 8532949 5710165 8250671 13176863 11521630 6948717 9997326 7964920 9827959 8275426 9686820 9173586 9564527 7593705 9071822 7963234 9516441 4898410 9131605 7367774 4051106 10692908 9547332 7077966 9370949 7405535 9219763 8521983 11437746 5235249 8402999 8385132

If MidValue = MinValue Then MidValue = MidValue + 1 If MidValue = MaxValue - 1 Then MidValue = MidValue - 1 Max Value selanjutnya

If Bitset > 0 Then

Niilai minvalue diganti dengan nilai midvalue jika bitset lebih besar dari 0 MinValue = MidValue

One(Index) = One(Index) + 1 Else

Nilai maxvalue diganti dengan nilai midvalue jika bitset lebih kecil sama dengan 0 MaxValue = MidValue

Zero(Index) = Zero(Index) + 1

End If

Setelah itu dapatlah nilai – nilai ASCII akhir yaitu : 73

97 126 253


(31)

150 227 139 120 233 194 224 220 63

Akhirnya nilai ASCII ini berubanh menjadi karakter – karakter simbol :

73= I, 97= a, 126= ~, 253= ý, 150= –, 227= ã, 139= ‹, 120= x, 233= é, 194=Â, 224= à, 220= Ü, 63= ?.

Hasil akhir adalah: Ia~ý–ã‹xéÂàÜ?

Berikut adalah proses perhitungan untuk kompresi file Index = (1 * (2 ^ i)) - 1 + mChar

0 1 2 3 4 5 6 7 0 1 4 9 19 40 81 163 0 1 4 9 19 40 82 165 0 1 4 9 19 40 82 165 0 1 4 9 20 41 84 169 0 1 3 8 17 35 71 143 0 1 4 9 19 40 81 164 0 1 4 9 19 40 82 166 0 1 4 9 19 40 82 165 0 1 4 9 20 41 83 167 0 1 4 9 20 41 84 169 0 1 4 9 20 41 84 169 0 1 4 9 19 39 80 161 0 1 4 9 20 41 83 168

Setelah itu mencari/menampilkan MaxValue dan MinValue. MaxValue

0 1 2 3 4 5 6 7

16777215 8388608 8388608 8388611 8388613 8388613 8388627 8388637 8388637 11184919 11184919 8699401 14084779 11392343 12014943 12246685 12710165 9764364 9764364 16214703 13729183 13729183 10681151 8817010 8817010 8568458 8568458 8409385 8409385 11292287 11292287 9256096 9256096 9086413 16188095 15598975 11074080 8811632 11111623 13173449 8648548 16004269 15231323 13384424 10306260 10306260 12627679 8478143


(32)

8478143 15822007 14866799 12896773 9519585 9519585 9519585 9047823 9047823 8656944 8656944 16634495 14506378 12235541 12235541 9733918 9733918 9546296 9546296 9396199 15465727 12619423 8824352 12673031 8877956 8532949 8532949 16225471 14570239 11521630 11521630 9997326 9997326 9827959 9827959 9686820 10385703 9564527 9564527 9071822 9971247 9516441 9516441 9131605 12693883 15631639 14486063 9547332 9547332 9370949 9370949 9219763 13298495 11437746 10470499 16655135

MinValue

0 1 2 3 4 5 6 7

0 0 4194304 0 0 4194306 8 16

4194326 88 3728365 3728365 7456730 2554944 231740 463480 926960 926960 3136311 6272622 6272622 8136762 5088728 5088728 7574249 7574249 7773091 7773091 8282126 3147520 7219904 7219904 8238000 8238000 7138304 6549184 6549184 6549184 2061824 4123648 4123648 8247296 4149932 4149932 4149932 5381198 4747576 3224740 5851442 6628552 1076616 1076616 1076616 2483778 6001682 2012008 5529916 5529916 6224811 8122028 8122028 1290940 5981483 5981483 7857700 7857700 8195419 8195419 6926816 6926816 6926816 5082880 5082880 5082880 5710165 6063444 2375804 2375804 6948717 6948717 7964920 7964920 8275426 8275426 6279824 6279824 7593705 7593705 4058768 4058768 4898410 4898410 2816424 5754176 4608600 4608600 7077966 7077966 7405535 7405535 2134000 2134000 4268000 115128 Kemudian dengan mendapatkan nilai MaxValue dan MinValue setelah itu mencari RangValue dengan cara MaxValue-MinValue.

RangValue = MaxValue – MinValue

0 1 2 3 4 5 6 7

16777215 8388608 4194304 8388611 8388613 4194307 8388619 8388621 4194311 11184831 7456554 4971036 6628049 8837399 11783203 11783205 11783205 8837404 6628053 9942081 7456561 5592421 5592423 3728282 1242761 994209 795367 636294 127259 8144767 4072383 2036192 1018096 848413 9049791 9049791 4524896 2262448 9049799 9049801 4524900 7756973 11081391 9234492 6156328 4925062 7880103 5253403 2626701 9193455 13790183 11820157 8442969 7035807 3517903 7035815 3517907 3127028 2432133 8512467 6384350 10944601 6254058 3752435 1876218 1688596 1350877 1200780 8538911 5692607 1897536 7590151 3795076 3450069 2822784 10162027 12194435 9145826 4572913 3048609 2032406 1863039 1552533 1411394 4105879 3284703 1970822 1478117 5912479 5457673 4618031 4233195 9877459 9877463 9877463 4938732 2469366 2292983 1965414 1814228 11164495 9303746 6202499 16540007


(33)

Setelah tu mencari MidValue dengan cara seperti berikut.

MidValue = MinValue + (RangValue * (Zero(Index) / (One(Index) + Zero(Index))))

0 1 2 3 4 5 6 7

8388608 4194304 6291456 4194306 4194306 6291460 4194318 4194326 6990533 3728365 8699401 7042389 9666080 8446543 6123342 6355082 9764364 3136311 8107351 13729183 8136762 10932972 8817010 7574249 8568458 7773091 8409385 8282126 8345756 7219904 9256096 8238000 9086413 8379402 11663200 11074080 8811632 7680408 6586724 8648548 8002134 10463574 13384424 10306260 5381198 7351223 10000978 5851442 8149805 8926916 12896773 9519585 2483778 6001682 8640109 5529916 8656944 6224811 8352927 14506378 9034078 5981483 9733918 7857700 9546296 8195419 9396199 9129359 12619423 8824352 7875584 8877956 8532949 5710165 8250671 13176863 11521630 6948717 9997326 7964920 9827959 8275426 9686820 9173586 9564527 7593705 9071822 7963234 9516441 4898410 9131605 7367774 4051106 10692908 9547332 7077966 9370949 7405535 9219763 8521983 11437746 5235249 8402999 8385132 If MidValue = MinValue Then MidValue = MidValue + 1

If MidValue = MaxValue - 1 Then MidValue = MidValue – 1 Untuk Value selanjutnya

If Value >= MidValue Then

mChar dikali 2 dan ditambah 1 jika nilai value lebih besar dari midvalue mChar = (2 * mChar) + 1

Dan nilai minvalue menjadi midvalue jika nilai value lebih besar dari midvalue MinValue = MidValue

One(Index) = One(Index) + 1 Else

Dan mChar dikali 2jika nilai value lebih besar dari midvalue mChar = 2 * mChar

Nilai maxValue menjadi midvalue jika nilai value lebih besar dari midvalue MaxValue = MidValue

Zero(Index) = Zero(Index) + 1 End If

Setelah itu dapatlah nilai – nilai ASCII akhir yaitu : 73

76 77


(34)

85 32 75 79 77 80 85 84 69 82

Akhirnya nilai ASCII ini berubanh menjadi karakter – karakter simbol :

73= I, 76= L, 77= M, 85= U, 32= [Spasi], 75= K, 79= O, 77= M, 80= P, 85=U, 84= T, 69= E, 82= R.

Hasil akhir adalah: ILMU KOMPUTER

4.2 Pengujian Sistem

Pengujian untuk sistem ini dilakukan untuk mendapat hasil file yang dikompresi. Kriteria pengujian yang dilakukan adalah sebagai berikut :

1. File text yang digunakan adalah docx dan odt

2. Hasil file text dari Algoritma DMC dapat disimpan di dalam komputer. 3. File text yang di kompresi dapat di dekompresi kembali

4. Hasil file text dari proses Algoritma DMC dapat dianalisis dengan melihat rasio dan hasil dari runtime.


(35)

4.2.1 Halaman Cover

Tampilan Halaman Cover dapat dilihat pada Gambar4.1.

Gambar4.1 Halaman Cover

Gambar4.1 merupakan tampilan awal atau cover ketika program mulai dijalankan.

Pada gambar tersebut terdapat button yang bernama “DMC” untuk mengakses


(36)

4.2.2 Menu Utama

Tampilan halaman Utama pada Aplikasi Kompresi dapat dilihat pada Gambar4.2.

Gambar4.2 Menu Utama

Gambar4.2 merupakan tampilan halaman utama ketika user menekan button “DMC” untuk melanjutkan program. Pada gambar tersebut terdapat menu “File” yang berisi menu exit, menu “Help” berisi tentang aplikasi tersebut untuk mengakses halaman tentang aplikasi danmenu “About” mengenai informasi programmer.


(37)

4.2.3 Halaman Menu About

Halaman menu About merupakan halaman yang digunakan untuk melihat informasi tentang program dan programmer, tampilan Menu About dapat dilihat pada Gambar4.3.

Gambar 4.3 Tampilan Halaman Menu About

4.2.4 Halaman Menu Help

Halaman menu Help merupakan halaman yang berisikan panduan dalam menggunakan sistem ini. Pada halaman Help, dijelaskan langkah-langkah melakukan proses kompresi dan dekompresi pada file text yang merupakan proses utama pada sistem ini. Tampilan halaman menu Help dapat dilihat pada Gaambar 4.4


(38)

Gambar 4.4 Halaman Menu Help 4.3 Tahap Pengujian

Tahap pengujian sistem merupakan lanjutan dari tahap yang sebelumnya telah dilakukan yaitu tahap implementasi sistem. Tahap pengujian sistem ini melakukan proses DMC pada file text.

4.3.1 Pengujian Kompresi dan Dekompresi File Text

Ada 2 jenis pengujian kompresi dan dekompresi file text, yaitu untuk file text berfomat .docx dan untuk file text berformat .odt. Langkah selanjutnya kita dapat memilih salah satu file tersebut.

4.3.1.1 Pengujian Kompresi dan Dekompresi Untuk File Text (.docx)

Pengujian proses kompresi dapat dilakukan oleh user dengan menekan tombol open dan memilih tipe file text yaitu .docx untuk mengaktifkan tombol Kompresi dan kemudian sistem akan menampilkan isi file text tersebut. Kemudian user memproses kompresi dengan menekan tombol Kompresi dan sistem akan menampilkan hasil akhirnya, dimana hasil akhirnya akan menampilkan simbol-simbol yang tidak diketahui artinya. Setelah itu kita simpan untuk menampilkan rasionya.


(39)

Langkah pertama yang dilakukan yaitu pemiliha file text terlihat pada Gambar 4.5  Open file .docx

Gambar 4.5 Pop Up Window hasil Open file .docx

Pengujian proses Open dapat dilakukan dengan memilih tombol Open, kemudian memilih file text .docx dan menampilkan isi file. Pada saat tombol Open dieksekusi maka akan muncul pop-up window Open untuk membuka file, Hasil dapat dilihat pada Gambar 4.6.


(40)

Setelah file text dipilih maka program akan menampilkan isi file yang dipilih, dan menampilkan besar file, panjang karakter pada sistem, untuk selanjutnya akan diproses. Proses tersebut dapat dilihat pada Gambar 4.6.

a. Proses Kompresi File .docx

Gambar 4.7 Proses Kompresi File .docx

Pengujian proses kompresi dapat aktif jika dilakukan proses Open. Setelah memilih tombol Kompresi maka akan muncul hasil file text yang baru yang di kompresi dengan isi yang berbeda dari file aslinya, panjang karakter setelah kompresi dan menampilkan durasi kerja, akan tetapi besar file sesudah terkompresi dan rasio akan tampil setelah file di simpan, dapat dilihat pada Gambar 4.9.


(41)

 Proses Simpan Kompresi file .docx

Gambar 4.8 Pop Up Window Simpan Kompresi File .docx

Pengujian proses Simpan dapat dilakukan setelah proses kompresi maupun dekompresidilakukan, pada saat tombol simpan dieksekusi maka akan muncul pop-up window Open file untuk menentukan lokasi tempat file yang akan disimpan dan melakukan proses Simpan, dapat dilihat pada Gambar 4.8.


(42)

Gambar 4.9 merupakan hasil proses simpan file yang terkompresi, yang menampilkan hasil besar file setelah melalui proses kompresi dan juga menampilkan rasio file tersebut.

b. Proses Dekompresi File .docx

Pengujian proses dekompresi dapat dilakukan oleh user dengan menekan tombol open dan memilih tipe file .dmc yang berformat .docx saat terkompresi, untuk mengaktifkan tombol Dekompresi dan kemudian sistem akan menampilkan isi file text tersebut. Kemudian user memproses dekompresi dengan menekan tombol Dekompresi dan sistem akan menampilkan hasil akhirny, dimana hasil akhirnya akan menampilkan arti dari simbol-simbol yang ada. Setelah itu kita simpan untuk menampilkan rasionya.

 Open File Dekompresi

Gambar 4.10 Open File Dekompresi

Pengujian proses Open dapat dilakukan dengan memilih tombol Open, kemudian memilih file text .dmc dan menampilkan isi file. Pada saat tombol Open dieksekusi maka akan muncul pop-up window Open untuk membuka file, Hasil dapat dilihat pada Gambar 4.10.


(43)

Gambar 4.11 Hasil Buka File Dekompresi

Setelah file dipilih maka program akan menampilkan isi file yang dipilih, besar file, panjang karakter pada sistem, untuk selanjutnya akan diproses. Proses tersebut dapat dilihat pada Gambar 4.11.

 Dekompresi File .dmc


(44)

Pengujian proses dekompresi dapat aktif jika dilakukan proses Open terhadap file dmc. Setelah memilih tombol Dekompresi maka akan muncul hasil file text yang baru yang di dekompresi dengan hasil yang sama dari file kompresinya, dan muncul hasil panjang karakter setelah dekompresi dan menampilkan durasi kerja, akan tetapi besar file sesudah terdekompresi dan rasio akan tampil setelah file di simpan, dapat dilihat pada Gambar 4.14

 Proses Simpan Dekompresi File .dmc Menjadi .docx

Gambar 4.13 Pop Up Window Simpan Dekompresi File .docx

Pengujian proses Simpan dapat dilakukan setelah proses dekompresi maupun kompresidilakukan, pada saat tombol simpan dieksekusi maka akan muncul pop-up window Open file untuk menentukan lokasi tempat file yang akan disimpan, kemudian kita memilih dengan file text apa yang akan disimpan (.docx) dan setelah melakukan proses Simpan, dapat dilihat pada Gambar 4.13.


(45)

Gambar 4.14 Hasil Dekompresi File .docx

Gambar 4.14 merupakan hasil proses simpan file yang tederkompresi, yang menampilkan hasil besar file setelah melalui proses dekompresi dan juga menampilkan rasio file tersebut.

4.3.1.2 Pengujian Kompresi dan Dekompresi Untuk File Text .odt

Pengujian proses kompresi dapat dilakukan oleh user dengan menekan tombol open dan memilih tipe file text yaitu .odt untuk mengaktifkan tombol Kompresi dan kemudian sistem akan menampilkan isi file text tersebut. Kemudian user memproses kompresi dengan menekan tombol Kompresi dan sistem akan menampilkan hasil akhirnya, dimana hasil akhirnya akan menampilkan simbol-simbol yang tidak diketahui artinya. Setelah itu kita simpan untuk menampilkan rasionya.


(46)

Langkah pertama yang dilakukan yaitu pemilihan file text terlihat pada Gambar4.15  Open file .odt

Gambar 4.15 Pop Up Window Hasil Open File .odt

Pengujian proses Open dapat dilakukan dengan memilih tombol Open, kemudian memilih file text .odt dan menampilkan isi file. Pada saat tombol Open dieksekusi maka akan muncul pop-up window Open untuk membuka file, Hasil dapat dilihat pada Gambar 4.15.


(47)

Setelah file text dipilih maka program akan menampilkan isi file yang dipilih, besar file, panjang karakter pada sistem, untuk selanjutnya akan diproses. Proses tersebut dapat dilihat pada Gambar 4.16.

a. Proses Kompresi File .odt

Gambar 4.17 Proses Kompresi dengan File .odt

Pengujian proses kompresi dapat aktif jika dilakukan proses Open. Setelah memilih tombol Kompresi maka akan muncul hasil file text yang baru yang di kompresi dengan isi yang berbeda dari file aslinya, panjang karakter setelah kompresi dan menampilkan durasi kerja, akan tetapi besar file sesudah terkompresi dan rasio akan tampil setelah file di simpan, dapat dilihat pada Gambar 4.17.


(48)

 Proses Simpan Kompresi File .odt

Gambar 4.18 Pop Up Window Simpan Kompresi File .odt

Pengujian proses Simpan dapat dilakukan setelah proses kompresi maupun dekompresidilakukan, pada saat tombol simpan dieksekusi maka akan muncul pop-up window Open file untuk menentukan lokasi tempat file yang akan disimpan dan melakukan proses Simpan, dapat dilihat pada Gambar 4.18.


(49)

Gambar 4.19 merupakan hasil proses simpan file yang tederkompresi dengan file .docx, yang menampilkan hasil besar file setelah melalui proses kompresi dan juga menampilkan rasio file tersebut.

b. Proses Dekompresi File.odt

Pengujian proses dekompresi untuk file .odt sama seperti proses dekompresi file .docx seperti yang telh dijelaskan sebelumnya. Sehingga user dapat dilakukan proses menekan tombol open dan memilih tipe file .dmc yang terkompresi, untuk mengaktifkan tombol Dekompresi dan kemudian sistem akan menampilkan isi file text tersebut. Kemudian user memproses dekompresi dengan menekan tombol Dekompresi dan sistem akan menampilkan hasil akhirnya, dimana hasil akhirnya akan menampilkan arti dari simbol-simbol yang ada. Setelah itu kita simpan untuk menampilkan rasionya. Proses simpannya dapat kita lihat pada gambar 4.20.

 Proses Simpan Dekompresi File .odt

Gambar 4.20 Pop Up Window Simpan Dekompresi File .odt

Pengujian proses Simpan dapat dilakukan setelah proses dekompresi maupun kompresidilakukan, pada saat tombol simpan dieksekusi maka akan muncul pop-up window Open file untuk menentukan lokasi tempat file yang akan disimpan,


(50)

kemudian kita memilih dengan file text apa yang akan disimpan (.odt) kemudian melakukan proses Simpan, dapat dilihat pada Gambar 4.20.

Gambar 4.21 Hasil Dekompresi File .odt

Gambar 4.21 merupakan hasil proses simpan file yang tederkompresi dengan file .odt, yang menampilkan hasil besar file setelah melalui proses dekompresi dan juga menampilkan rasio file tersebut.

4.4 Analisa DMC

Tabel 4.1 Analisa Untuk File .docx Yang Terkompresi Perco

baan

KLASIFIKASI KOMPRESI Nama File

(.docx)

Besar File (byte)

Panjang Karakter runtime (ms)

rasio % before after before after

1 kancil 10187 byte 96 byte 147 96 247 ms 1061.46%

2 kopi 10233 byte 183 byte 307 183 753 ms 5591.8%

3 Premier

League

10212 byte 166 byte 280 166 673 ms 6151.81% 4 Organisasi 10638 byte 495 byte 883 495 5011 ms 2149.09%


(51)

Tabel 4.2 Analisa Untuk File .docx Yang Dekompresi Perco baan KLASIFIKASI DEKOMPRESI Nama File (.dmc) Besar File (byte)

Panjang Karakter runtime (ms)

rasio % before after before after

1 kancilkompre

si 96 byte 10118 byte 96 147 209 ms 0.95 %

2 kopikompresi 183 byte 10214

byte 183 307 595 ms 1.79%

3 premierLeag ueKompresi

166 byte 10189 byte

166 280 478 ms 1.63%

4 Organisasiko mpresi

495 byte 10498 byte

495 883 4048 ms 4.72%

5 Angka

kompresi

182 byte 10105 byte

182 455 1418 ms 1.8%

Tabel 4.3 Analisa Untuk File .odt Yang Terkompresi Perco

baan

KLASIFIKASI KOMPRESI FILE .odt Nama File

(.odt)

Besar File (byte)

Panjang Karakter runtime (ms)

rasio % before after before after

1 kancil 2425 byte 96 byte 149 96 324 ms 2526.04%

2 kopi 2507 byte 183 byte 307 183 797 ms 1369.95%

3 Premier

League 2480 byte 166 byte 280 166 666 ms 1439.98% 4 Organisasi 2793 byte 495 byte 883 495 5329 ms 4.72%

5 Angka 2394 byte 182 byte 455 182 670 ms 1315.38%

Tabel 4.4 Analisa Untuk File .odt Yang Dekompresi Perco

baan Nama File KLASIFIKASI DEKOMPRESI FILE .odt

(.dmc) Besar File (byte) Panjang Karakter runtime (ms) rasio % before after before after

1 kancilkompre si

96 byte 2434 byte 96 149 211 ms 3.95%

2 kopikompresi 183 byte 2528 byte 183 307 635 ms 7.24% 3 premierLeag

ueKompresi 166 byte 2500 byte 166 280 501 ms 6.64% 4 Organisasiko

mpresi 495 byte 2789 byte 495 883 3828 ms 17.75%

5 Angka

kompresi


(52)

4.5 Perhitungan Kompleks Algoritma DMC

Dari algoritma DMC ini akan dilakukan perhitungan kompleksitasnya. Kompleksitas yang dihitung nantinya adalah average case, best case, dan worst case. Pada average case akan dicari Big  (average time). Pada best case akan dicari Big  (best time). Sedangkan untuk worst case akan dicari Big O(worst time).

4.5.1. Perhitungan Running Time Kompresi

Proses perhitungan running time dilakukan untuk mendapatkan Big , Big , dan Big O. Dari hasil yang didapat nantinya akan berguna agar user mengetahui waktu terbaik dan terburuk dari algoritma DMC. Tabel 4.5 berikut ini adalah tabel perhitungan running time.

Tabel 4.5 Tabel Perhitngan Running Time Kompresi

No Code c # c*#

1 Dim InpPos, MinValue, MaxValue, RangValue, MidValue,

Index, TopBit, One(256), Zero(256), i As Integer

C1 1 C1

2 Dim mChar, Bitset As Byte C1 1 C1

3 ReDim outtext(500) C2 1 C2

4 OutPos = OutBitCount = OutByteBuf = MinValue = InpPos

= 0

C3 1 C3

5 MaxValue = (2 ^ MaxBits) - 1 C4 1 C4

6 TopBit = 2 ^ (MaxBits - 1) C4 1 C4

7 Index = -1 C5 1 C5

8 For i = 0 To 256 C6 |256| C6|256|

9 One(i) = 1 C7 |256| C7|256|

10 Zero(i) = 1 C7 |256| C7|256|

11 Next C8 |256| C8|256|

12 Do While InpPos <= UBound(listarr) C9 |256|2 C9|256|2

13 mChar = listarr(InpPos)

C10 |256|2 C10|256|2

14 InpPos = InpPos + 1 C11 |256|2 C11|256|2

15 For i = 0 To 7 C6 |256| C6|256|

16 Bitset = (mChar And (2 ^ (7 - i))) And &HFF C12 |256| C12|256|


(53)

i)))

18 RangValue = MaxValue - MinValue C14 |256| C14|256|

19 MidValue = MinValue + (RangValue * (Zero(Index) / (One(Index) + Zero(Index))))

C15 |256| C15|256|

20 If MidValue = MinValue Then MidValue = MidValue + 1

C16 |256| C16|256|

21 If MidValue = MaxValue - 1 Then MidValue = MidValue - 1

C16 |256| C16|256|

22 If Bitset > 0 Then C17 |256| C17|256|

23 MinValue = MidValue C18 |256| C18|256|

24 One(Index) = One(Index) + 1 C19 |256| C19|256|

25 Else C20 |256| C20|256|

26 MaxValue = MidValue C18 |256| C18|256|

27 Zero(Index) = Zero(Index) + 1 C19 |256| C19|256|

28 End If C21 |256| C21|256|

29 Do While (MaxValue And TopBit) = (MinValue

And TopBit) Or MinValue > MaxValue - 255

C22 |256|3 C22|256|3

30 If (MinValue And TopBit) = 0 Then C23 |256|3 C23|256|3

31 OutByteBuf = OutByteBuf * 2 + 0 C24 |256|3 C24|256|3

32 OutBitCount = OutBitCount + 1 C25 |256|3 C25|256|3

33 If OutBitCount = 8 Then C26 |256|3 C26|256|3

34 outtext(OutPos) = OutByteBuf C27 |256|3 C27|256|3

35 OutBitCount = 0 C28 |256|3 C28|256|3

36 OutByteBuf = 0 C28 |256|3 C28|256|3

37 OutPos = OutPos + 1 C29 |256|3 C29|256|3

38 If OutPos > UBound(outtext) Then

C30 |256|3 C30|256|3

39 ReDim Preserve outtext(OutPos + 500)

C2 1 C2

40 End If C21 |256|3 C21|256|3

41 End If C21 |256|3 C21|256|3

42 Else C20 |256|4 C20|256|4


(54)

44 OutBitCount = OutBitCount + 1 C25 |256|4 C25|256|4

45 If OutBitCount = 8 Then C26 |256|4 C26|256|4

46 outtext(OutPos) = OutByteBuf C27 |256|4 C27|256|4

47 OutBitCount = 0 C28 |256|4 C28|256|4

48 OutByteBuf = 0 C28 |256|4 C28|256|4

49 OutPos = OutPos + 1 C29 |256|4 C29|256|4

50 If OutPos > UBound(outtext) Then

C30 |256|4 C30|256|4

51 ReDim Preserve outtext(OutPos + 500)

C2 1 C2

52 End If C21 |256|4 C21|256|3

53 End If C21 |256|4 C21|256|3

54 End If C21 |256|3 C21|256|3

55 MaxValue = (MaxValue And (TopBit - 1)) * 2 + 1

C31 |256|3 C31|256|3

56 MinValue = (MinValue And (TopBit - 1)) * 2

C32 |256|3 C32|256|3

57 If MinValue >= MaxValue Then C33 |256|3 C33|256|3

58 MaxValue = (2 ^ MaxBits) - 1 C34 |256|3 C34|256|3

59 End If C21 |256|3 C21|256|3

60 Loop C35 |256|3 C35|256|3

61 Next C8 |256|2 C8|256|2

62 Loop C35 |256| C35|256|

63 For i = MaxBits - 1 To 0 Step -1 C6 |256| C6|256|

64 If (MinValue And 2 ^ i) = 0 Then C23 |256| C23|256|

65 OutByteBuf = OutByteBuf * 2 + 0 C24 |256| C24|256|

66 OutBitCount = OutBitCount + 1 C25 |256| C25|256|

67 If OutBitCount = 8 Then C26 |256| C26|256|

68 outtext(OutPos) = OutByteBuf C27 |256| C27|256|

69 OutBitCount = 0 C28 |256| C28|256|

70 OutByteBuf = 0 C28 |256| C28|256|


(55)

72 If OutPos > UBound(outtext) Then C30 |256| C30|256|

73 ReDim Preserve outtext(OutPos + 500) C2 1 C2

74 End If C21 |256| C21|256|

75 End If C21 |256| C21|256|

76 Else C20 |256|2 C20|256|2

77 OutByteBuf = OutByteBuf * 2 + 1 C24 |256|2 C24|256|2

78 OutBitCount = OutBitCount + 1 C25 |256|2 C25|256|2

79 If OutBitCount = 8 Then C26 |256|2 C26|256|2

80 outtext(OutPos) = OutByteBuf C27 |256|2 C27|256|2

81 OutBitCount = 0 C28 |256|2 C28|256|2

82 OutByteBuf = 0 C28 |256|2 C28|256|2

83 OutPos = OutPos + 1 C29 |256|2 C29|256|2

84 If OutPos > UBound(outtext) Then C30 |256|2 C30|256|2

85 ReDim Preserve outtext(OutPos + 500) C2 1 C2

86 End If C21 |256|2 C21|256|2

87 End If C21 |256|2 C21|256|2

88 End If C21 |256|2 C21|256|2

89 Next C8 |256| C8|256|

90 Do While OutBitCount > 0 C9 |256| C9|256|

91 OutByteBuf = OutByteBuf * 2 + 1 C24 |256| C24|256|

92 OutBitCount = OutBitCount + 1 C25 |256| C25|256|

93 If OutBitCount = 8 Then C26 |256| C26|256|

94 outtext(OutPos) = OutByteBuf C27 |256| C27|256|

95 OutBitCount = 0 C28 |256| C28|256|

96 OutByteBuf = 0 C28 |256| C28|256|

97 OutPos = OutPos + 1 C29 |256| C29|256|

98 If OutPos > UBound(outtext) Then C30 |256| C30|256|

99 ReDim Preserve outtext(OutPos + 500) C2 1 C2

10 0


(56)

10 1

End If C21 |256| C21|256|

10 2

Loop C35 |256| C35|256|

10 3

ReDim Preserve outtext(OutPos - 1) C2 1 C2

10 4

End Sub

Dari perhitungan running time pada tabel 4.5 terdapat 5 kolom. Kolom 1 merupakan nomor urut dari code program dari metode Dynamic Markov Compression. Kolom 2 merupakan code program metode Dynamic Markov Compression. Kolom 3 atau kolom c merupakan waktu yang dibutuhkan untuk menjalankan setiap statement dari code. Kolom 4 atau kolom # merupakan berapa kali statement tersebut dijalankan. Sedangkan kolom 5 merupakan perkalian dari C dengan #. Oleh karena itu didapat T(|n|) yang merupakan jumlah dari kolom c*# yaitu sebagai berikut.

T(n) = 2C1 + 7C2 + C3 + 2C4 + C5 +3C6|256| + 2C7|256| + 2C8|256| + C9|256| +

2C12|256| + C13|256| + C14|256| + C15|256| + 2C16|256| + C17|256| + 2C18|256| +

2C19|256| + C20|256| + 5C21|256| + C23|256| + 2C24|256|+ 2C25|256| + 2C26|256|

+ 2C27|256| + 4C28|256| + 2C29|256| + 2C30|256| + 2C35|256| + C8|256|2 +

C9|256|2 + C10|256|2 + C11|256|2 + C20|256|2 + 3C21|256|2 + C24|256|2 + C25|256|2

+ C26|256|2 + C27|256|2 + 2C28|256|2 + C29|256|2 +C30|256|2 + 6C21|256|3 +

C22|256|3 + C23|256|3 + C24|256|3 + C25|256|3 + C26|256|3 + C27|256|3 +2C28|256|3

+ C29|256|3 + C30|256|3 +C31|256|3 + C32|256|3 + C33|256|3 + C34|256|3 +

C35|256|3 + C20|256|4 + C24|256|4 + C25|256|4 + C26|256|4 + C27|256|4 +

2C28|256|4 + C29|256|4 + C30|256|4

= (2C1 + 7C2 + C3 + 2C4 + C5) |256|0 + (3C6 + 2C7 + 2C8 + C9+ 2C12 + C13 + C14 +

C15 + 2C16 + C17 + 2C18 + 2C19 + C20 + 5C21 + C23 + 2C24+ 2C25 + 2C26 + 2C27

+ 4C28 + 2C29 + 2C30 + 2C35) |256|1 + (C8+ C9 + C10 + C11+ C20 + 3C21 + C24

+ C25 + C26 + C27+ 2C28 + C29 + C30) |256|2 + (6C21 + C22 + C23 + C24 + C25 +

C26 + C27 +2C28+ C29 + C30 +C31+ C32 + C33 + C34+ C35) |256|3 + (C20 + C24 +

C25 + C26 + C27 + 2C28 + C29 + C30) |256|4

T(n) = (|256|4)

Diperoleh bahwa dari segi kompleksitas waktu rata-rata yang dibutuhkan untuk mengkompresi file dengan algoritma Dynamic Markov Compression adalah panjang dari bit. Dari perhitungan diatas maka nilai big = |256|4 yang merupakan average time, untuk worst time yaitu big O > |256|4, dan untuk best time yaitu big  < |256|4 dimana 256 merupakan bit yang masing-masing kondisi merupakan kompleksitas dari metode Dynamic Markov Compression.


(57)

4.5.2. Perhitungan Running Time Dekompresi

Proses perhitungan running time dilakukan untuk mendapatkan Big , Big , dan Big O. Dari hasil yang didapat nantinya akan berguna agar user mengetahui waktu terbaik dan terburuk dari algoritma DMC. Tabel 4.6 berikut ini adalah tabel perhitungan running time.

Tabel 4.6 Tabel Perhitngan Running Time Dekompresi

No Code c # c*#

1 Dim InpPos As Integer C1 1 C1

2 Dim InBitPos As Integer C1 1 C1

3 Dim MinValue As Integer C1 1 C1

4 Dim MaxValue As Integer C1 1 C1

5 Dim RangValue As Integer C1 1 C1

6 Dim MidValue As Integer C1 1 C1

7 Dim Value As Integer C1 1 C1

8 Dim mChar As Byte C1 1 C1

9 Dim i As Integer C1 1 C1

10 Dim Index As Integer C1 1 C1

11 Dim EOF_State As Boolean C1 1 C1

12 Dim TopBit As Integer C1 1 C1

13 Dim One(256) As Integer C1 1 C1

14 Dim Zero(256) As Integer C1 1 C1

15 ReDim outtext(500) C2 1 C2

16 OutPos = 0 C3 1 C3

17 OutBitCount = 0 C3 1 C3

18 OutByteBuf = 0 C3 1 C3

19 MinValue = 0 C3 1 C3

20 MaxValue = (2 ^ MaxBits) – 1 C4 1 C4

21 TopBit = 2 ^ (MaxBits - 1) C5 1 C5

22 InpPos = 0 C3 1 C3


(58)

MaxBits)

24 Index = -1 C7 1 C7

25 For i = 0 To 256 C8 |256| C8|256|

26 One(i) = 1 C9 |256| C9|256|

27 Zero(i) = 1 C9 |256| C9|256|

28 Next C10 |256| C10|256|

29 Do C11 |256|2 C11|256|2

30 mChar = 0 C12 |256|2 C12|256|2

31 For i = 0 To 7 C13 |256| C13|256|

32 Index = (1 * (2 ^ i)) - 1 + mChar C14 |256| C14|256|

33 RangValue = MaxValue - MinValue C15 |256| C15|256|

34 MidValue = MinValue + RangValue *

(Zero(Index) / (One(Index) + Zero(Index)))

C16 |256| C16|256|

35 If MidValue = MinValue Then MidValue =

MidValue + 1

C17 |256| C17|256|

36 If MidValue = MaxValue - 1 Then MidValue =

MidValue – 1

C17 |256| C17|256|

37 If Value >= MidValue Then C18 |256| C18|256|

38 mChar = (2 * mChar) + 1 C19 |256| C19|256|

39 MinValue = MidValue C20 |256| C20|256|

40 One(Index) = One(Index) + 1 C21 |256| C21|256|

41 Else C22 |256| C22|256|

42 mChar = 2 * mChar C19 |256| C19|256|

43 MaxValue = MidValue C20 |256| C20|256|

44 Zero(Index) = Zero(Index) + 1 C21 |256| C21|256|

45 End If C23 |256|2 C23|256|2

46 Do While (MaxValue And TopBit) = (MinValue

And TopBit) Or MinValue > MaxValue - 255

C24 |256|3 C24|256|3

47 If InpPos <= UBound(listarr) Then C25 |256|3 C25|256|3

48 Value = (Value And (TopBit - 1)) * 2

+ ReadBitsFromArray(listarr, InpPos, InBitPos, 1)

C26 |256|3 C26|256|3

49 MaxValue = (MaxValue And (TopBit -

1)) * 2 + 1

C27 |256|3 C27|256|3

50 MinValue = (MinValue And (TopBit -

1)) * 2

C27 |256|3 C27|256|3

51 If MinValue >= MaxValue Then MaxValue

= (2 ^ MaxBits) – 1


(59)

52 Else C22 |256|4 C22|256|4

53 EOF_State = True C29 |256|4 C29|256|4

54 Exit Do C30 |256|4 C30|256|4

55 End If C23 |256|4 C23|256|4

56 Loop C31 |256|3 C31|256|3

57 If EOF_State = True Then Exit Do C32 |256|3 C32|256|3

58 Next C10 |256|2 C10|256|2

59 Call AddmCharToArray(outtext, OutPos, mChar) C33 |256|2 C33|256|2

60 Loop C31 |256| C31|256|

61 ReDim Preserve outtext(OutPos - 1) C2 1 C2

62 End Sub

Dari perhitungan running time pada tabel 4.6 terdapat 5 kolom. Kolom 1 merupakan nomor urut dari code program dari metode Dynamic Markov Compression. Kolom 2 merupakan code program metode Dynamic Markov Compression. Kolom 3 atau kolom c merupakan waktu yang dibutuhkan untuk menjalankan setiap statement dari code. Kolom 4 atau kolom # merupakan berapa kali statement tersebut dijalankan. Sedangkan kolom 5 merupakan perkalian dari C dengan #. Oleh karena itu didapat T(|n|) yang merupakan jumlah dari kolom c*# yaitu sebagai berikut.

T(n) = 14C1 + 2C2 + 5C3 + C4 + C5 +C6 + C7+ C8|256| + C9|256|+ C10|256| + C13|256| +

C14|256| + C15|256| + C16|256| + 2C17|256| + C18|256| + 2C19|256| + 2C20|256| +

2C21|256| + C22|256| + C10|256|2 + C11|256|2 + C12|256|2 + C33|256|2 + C24|256|3 +

C25|256|3 + C26|256|3 + 2C27|256|3 +C28|256|3 + C31|256|3 + C32|256|3 + C22|256|4

+ C23|256|4 + C29|256|4 + C30|256|4

= (14C1 + 2C2 + 5C3 + C4 + C5 +C6 + C7 ) |256|0 + (C8 + C9+ C10 + C13 + C14 +

C15 + C16 + 2C17 + C18 + 2C19 + 2C20 + 2C21 + C22 ) |256|1 + (C10+ C11 + C12 +

C33 ) |256|2 + (C24 + C25 + C26 + 2C27 +C28+ C31+ C32) |256|3 + (C22 + C23 +

C29 + C30) |256|4

T(n) = (|256|4)

Diperoleh bahwa dari segi kompleksitas waktu rata-rata yang dibutuhkan untuk mengkompresi file dengan algoritma Dynamic Markov Compression adalah panjang dari bit. Dari perhitungan diatas maka nilai big = |256|4 yang merupakan average time, untuk worst time yaitu big O > |256|4, dan untuk best time yaitu big  < |256|4 dimana 256 merupakan bit yang masing-masing kondisi merupakan kompleksitas dari metode Dynamic Markov Compression.


(60)

BAB 5

KESIMPULAN DAN SARAN

Setelah membaca bab ini, pembaca akan mengerti tentang kesimpulan yang didapat dari penulis, dan juga saran dari penulis.

5.1 Kesimpulan

Berdasarkan Berdasarkan hasil studi literatur, analisis, perancangan, implementasi dan pengujian sistem ini, maka didapat kesimpulan sebagai berikut :

1. Dari 5 file *.docx dan *.odt yang di kompresi didapatkan file yang berukuran besar belum tentu hasil kompresinya mempunyai rasio paling besar.

2. Dan dari 5 file *.docx dan *.odt yang di dekompresi didapatkan file yang berukuran besar hasil dekompresinya mempunyai rasio paling besar.

3. Dari analisis algoritma dari segi kompleksitas diperoleh bahwa waktu rata-rata yang dibutuhkan untuk mengkompresi file dengan algoritma Dynamic Markov Compression adalah panjang dari bit. Dimana nilai big = |256|4


(61)

5.2 Saran

Adapun saran-saran yang dapat penulis berikan untuk pengembangan dan perbaikan sistem ini adalah sebagai berikut :

1. Membandingkan kinerja algoritma dengan algoritma kompresi lossless lainnya. 2. Sistem ini dapat dikembangkan lebih lanjut dengan menambahkan pilihan file

data berformat lain, seperti .pdf, .xlsx, dan lain-lain.

3. Menambahkan database untuk history pada aplikasi yang dibangun pada penelitian untuk perhitungan properties berkas yang telah dimampatkan.


(62)

BAB 2

TINJAUAN PUSTAKA

Setelah membaca bab ini maka pembaca akan memahami pengertian tentang kompresi, pengolahan citra, kompresi data, Teknik kompresi, Kompresi citra.

2.1 Defenisi Data

Data adalah keterangan yang benar dan nyata atau dengan kata lain adalah catatan atas kumpulan fakta yang mendeskripsikan simbol, grafik, gambar, kata, angka, huruf, objek ataupun kondisi. Data merupakan bentuk jamak dari datum, berasal dari bahasa

latin yang artinya “sesuatu yang diberikan”. Data terkadang dipandang sebagai bentuk

terendah dari informasi. Istilah data dan file silih berganti digunakan ataupun secara bersama-sama. File adalah pengarsipan dalam suatu media yang terdiri dari kumpulan karakter dan didokumentasikan dalam bentuk digital pada komputer. Sehingga, sering sekali istilah file ataupun data silih berganti digunakan untuk mengacu pada objek yang sama. Penggunaan istilah “data teks” atau “file teks” sama-sama mengacu kepada objek yang sama, perbedaan pengertian antara keduanya tersebut tidak begitu jelas. Namun, istilah data biasanya digunakan untuk mendeskripsikan apa yang menjadi isi suatu file. Berbagai jenis data antara lain: data gambar, data teks, data suara, dll. Di dalam ilmu komputer penggunaan istilah tipe data juga digunakan. Merupakan penjelasan bagaimana data disimpan ataupun diolah oleh komputer. Tipe data sederhana melingkupi integer, real, boolean, character. Tipe data sederhana majemuk melingkupi string. Struktur data melingkupi array dan record. Struktur data majemuk melingkupi stack, queque, list, multilist, pohon biner dan graph . Pemakaian tipe data yang sesuai di dalam proses pemrograman akan menghasilkan algoritma yang jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana (Sihombing, 2010)


(1)

vii

ABSTRAK

Pada dasarnya ketidakpuasan pengguna terhadap ukuran file dan keinginan pengguna untuk dapat mengirim data lebih cepat belum dapat terpenuhi secara maksimal dan untuk mengatasi kedua masalah tersebut dapat diatasi dengan proses kompresi data. Kompresi adalah proses mereduksi ukuran suatu data untuk menghasilkan representasi digital yang padat (compact) namun tetap dapat mewakili kuantitas informasi yang terkandung pada data tersebut. Kompresi terbagi dua jenis yaitu Lossless dan Lossy. Disini penulis hanya membahas satu algoritma yaitu kompresi Lossless, yaitu algoritma Dynamic Markov Compression. Penulis hanya menggunakan file format (.docx) dan (.odt). File dikompresi dengan cara memampatkan file tersebut sehingga membentuk beberapa simbol yang menjadi hasil dari file terkompresi, ukuran file akan menjadi lebih kecil dan memungkinkan untuk pengiriman data lebih cepat, kemudian untuk mengembalikan file awal dilakukan proses dekompresi.


(2)

IMPLEMENTATION AND ANALYSIS OF DYNAMIC MARKOV COMPRESSION ALGORITHM (DMC) ON TEXT FILE

ABSTRACT

Basically the user dissatisfaction on the size of the file and the user wishes to be able to send data faster can not be fulfilled optimally and to solve these two problems can be solved with data compression process. Compression is the process of reducing the size of the data to produce a digital representation of a dense (compact) but still be able to represent the quantity of information contained in the data. Compression divided into two types: Lossless and Lossy. The author discusses only one algorithm is Lossless compression, namely Dynamic Markov Compression algorithms. The author only uses the file format (.docx) and (.odt). The file is compressed by compressing the file to form several symbols which became the result of the compressed file, the file size will be smaller and allows for faster data transmission, and then to restore the original file decompression process is carried out.


(3)

ix

DAFTAR ISI

Hal.

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel x

Daftar Gambar xi

xii Bab 1 Pendahuluan

1.1 Latar Belakang Masalah 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 2

1.5 Manfaat Penelitian 3

1.6 Metodologi Penelitian 3

1.7 Sistematika penulisan 4

Bab 2 Tinjauan Pustaka

2.1 Defenisi Data 5

2.2 Teknik File 6

2.3 Teknik Kompresi

2.3.1 Lossless Compression 2.3.2 Lossy Compression

6 7

2.4 Kompresi Data 7

2.5 Kompresi Citra 9

2.6 Metode Kompresi Data 9

2.7 Dekompresi Data 10

2.8 Dynamic Markov Compression 10

2.9 Penelitian yang Relevan

2.9.1 Kompresi citra menggunakan algoritma dynamic Markov 14 Compression

2.9.2 Study perbandingan kinerja algoritma kompresi Lempel ziv77, lempel ziv78, dan lempel ziv welch pada file text

14

Bab 3 Analisis Dan Perancangan Sistem 3.1 Analisis Sistem

3.1.1 Analisis masalah 15


(4)

3.2.3 Sequence Diagram 21 3.2.4 Flowchart

3.2.4.1 Flowchart Kompresi 22 3.2.4.2 Flowchart Dekompresi 23

3.3 Perancangan Antar Muka 24

3.3.1 Form Interface Cover 24

3.3.2 Interface Form Menu Utama 25

Bab 4 Implementasi Dan Pengujian

4.1 Implementasi Sistem 28

4.2 Pengujian Sistem 35

4.2.1 Tampilan Halaman Cover 36

4.2.2 Tampilan Menu Utama 37

4.2.3 Tampilan Halaman Menu About

4.2.4 Tampilan Halaman Menu Help 38 35

4.3 Tahap Pengujian 39

4.3.1 Pengujian Kompresi dan Dekompresi File Text

4.3.1.1 Pengujian Kompresi dan Dekompresi File Text .docx a. Proses Kompresi File .docx

b. Proses Dekompresi File .docx

39 41 43 4.3.1.2 Pengujian Kompresi dan Dekompresi File Text .odt

a. Proses Kompresi File .odt b. Proses Dekompresi File .odt

46 48 50 4.4 Analisa DMC

4.5 Perhitungan Kompleks Algoritma DMC 4.5.1 Perhitungan Running Time Kompresi 4.5.2 Perhitungan Running Time Dekompresi

51 53 58 Bab 5 Kesimpulan dan Saran

5.1 Kesimpulan 62

5.2 Saran 63

Daftar Pustaka 64

Lampiran Listing Program A-1

Lampiran Curriculum Vitae B-1


(5)

xi

DAFTAR TABEL

Hal. Tabel 3.1 Spesifikasi Use Case untuk Kompresi DMC

Tabel 3.2 Spesifikasi Use Case untuk Dekompresi DMC

18 18

Tabel 3.3 Rincian Rancangan Form Interface Cover 25

Tabel 3.4 Rincian Rancangan Form Interface Menu Utama 26 Tabel 4.1 Analisa Untuk File .docx Yang Terkompresi 51 Tabel 4.2 Analisa Untuk File .docx Yang Dekompresi 52 Tabel 4.3 Analisa Untuk File .odt Yang Terkompresi 52 Tabel 4.4 Analisa Untuk File .odt Yang Dekompresi

Tabel 4.5 Tabel Perhitngan Running Time Kompresi Tabel 4.6 Tabel Perhitngan Running Time Dekompresi

52 53 58


(6)

DAFTAR GAMBAR

Hal.

Gambar 2.1 Alur Kompresi-Dekompresi Data 9

Gambar 2.2 Model Awal DMC 11

Gambar 2.3 Sebuah Model yang Diciptakan Oleh Metode DMC Gambar 2.4 State yang Di-Cloning

12 13 Gambar 3.1 Diagram Ishikawa untuk Analisa Masalah 16 Gambar 3.2 Use Case Diagram Sistem Kompresi dan Dekompresi DMC 17

Gambar 3.3 Activity Diagram untuk Kompresi DMC 19

Gambar 3.4 Activity Diagram untuk Dekompresi DMC 20

Gambar 3.5 Sequence Diagram Kompresi DMC 21

Gambar 3.6 Sequence Diagram Dekompresi DMC 21

Gambar 3.7 Flowchart Kompresi 22

Gambar 3.8 Flowchart Dekompresi 23

Gambar 3.9 Interface Cover 24

Gambar 3.10 Interface Form Menu Utama 25

Gambar 4.1 Halaman Cover 36

Gambar 4.2 Menu Utama 37

Gambar 4.3 Halaman Menu About 38

Gambar 4.4 Halaman Menu Help 39

Gambar 4.5 Pop Up Window Hasil Open File .docx 40

Gambar 4.6 Hasil Buka File .docx 40

Gambar 4.7 Proses Kompresi File .docx 41

Gambar 4.8 Pop Up Window Simpan Kompresi File .docx 42

Gambar 4.9 Hasil Kompresi File .docx 42

Gambar 4.10 Open File Dekompresi 43

Gambar 4.11 Hasil Buka File Dekompresi 44

Gambar 4.12 Proses Dekompresi File .dmc 44

Gambar 4.13 Pop Up Window Simpan Dekompresi File .docx 45

Gambar 4.14 Hasil Dekompresi File .docx 46

Gambar 4.15 Pop Up Window Hasil Open File .odt 47

Gambar 4.16 Hasil Open File .odt 47

Gambar 4.17 Proses Kompresi dengan File .odt 48

Gambar 4.18 Pop up window Simpan Kompresi File .odt 49

Gambar 4.19 Hasil Kompresi File .odt 49

Gambar 4.20 Pop up window Simpan Dekompresi File .odt 50