APLIKASI KOMPRESI FILE MENGGUNAKAN KOMBINASI ALGORITMA LZ77 DAN HUFFMAN.

APLIKASI KOMPRESI FILE MENGGUNAKAN
KOMBINASI ALGORITMA LZ77 DAN HUFFMAN

SKRIPSI

Oleh :

YUSUF FERYANTO
0834010211

PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL
“VETERAN” J AWA TIMUR
2012

AAa
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

APLIKASI KOMPRESI FILE MENGGUNAKAN

KOMBINASI ALGORITMA LZ77 DAN HUFFMAN

SKRIPSI
Diajukan Untuk Memenuhi Sebagai Persyaratan
Dalam Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika

Oleh :

YUSUF FERYANTO
0834010211

PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL
“VETERAN” J AWA TIMUR
2012

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.


LEMBAR PENGESAHAN

APLIKASI KOMPRESI FILE MENGGUNAKAN
KOMBINASI ALGORITMA LZ77 DAN HUFFMAN

Disusun oleh :

YUSUF FERYANTO
0834010211
Telah disetujui mengikuti Ujian Negara Lisan
Gelombang V ( lima) Tahun Akademik 2011 / 2012

Pembimbing II

Pembimbing I

Nur Cahyo Wibowo, S.Kom, M.Kom
NPT. 379 030 040 1971


Ir .Sutiyono, MT
NIP.19600731 198703 1 001

Mengetahui,
Ketua Program Studi Teknik Informatika
Fakultas Teknologi Industri
Universitas Pembangunan Nasional ”Veteran” Jawa Timur

Dr. Ir. Ni Ketut Sar i, M.T
NPT. 19650731 199203 2001

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

SKRIPSI
APLIKASI KOMPRESI FILE MENGGUNAKAN
KOMBINASI ALGORITMA LZ77 DAN HUFFMAN
Disusun Oleh :

YUSUF FERYANTO

0834010211
Telah dipertahankan dan diterima oleh Tim Penguji Skripsi
Program Studi Teknik Informatika Fakultas Teknologi Industri
Universitas Pembangunan Nasional ”Veteran” Jawa Timur
Pada Tanggal 13 April 2012
Pembimbing :
1.

Tim Penguji :
1.

Nur Cahyo Wibowo, S.Kom, M.Kom
NIP. 3790 03040 197

Dr . Ir .Ni Ketut Sar i, MT

2.

2.


NPT. 19650731 199203 2001

Basuki Rachmat, S. Si, MT
Ir .Sutiyono, MT

NPT. 36907 060 209

NIP.19600731 198703 1 001
3.

Rinci Kembang Hapsari, S.Si, M.Kom
NIDN.071 212 7701

Mengetahui,
Dekan Fakultas Teknologi Industri
Universitas Pembangunan Nasional ”Veteran” Jawa Timur

Ir . Sutiyono, MT
NIP.19600731 198703 1 001


Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

J udul

: Pembuatan Aplikasi Kompresi File Menggunakan
Kombinasi Algor itma Huffman Dan LZ77

Dosen Pembimbing I

: Nur Cahyo Wibowo, S.Kom, M.Kom

Dosen Pembimbing II

: Ir .Sutiyono, MT.

Penyusun

: Yusuf Fer yanto


ABSTRAK
Perkembangan penggunaan komputer yang semakin meningkat dalam
berbagai bidang berkontribusi pada semakin bervariasinya format data yang
disimpan oleh pengguna. Format data tersebut meliputi data teks, audio dan video
serta kombinasi diantara ketiganya yang lazim disebut data multimedia.
Disamping itu frekuensi penggunaan data secara bersama-sama turut
serta membantu pengembangan jaringan komputer menjadi semakin kompleks
pada sehingga penggunaan bandwith menjadi semakin sempit untuk saling
berkirim data. Kondisi yang sering ditemui adalah pada saat mengirim data atau
file tentu akan menggunakan bandwidth yang besar apabila ukuran file yang akan
dikirim juga besar, sehingga proses pengiriman data akan mempengaruhi
kesibukan dan akan membuat pengiriman data atau file menjadi lama.
Sehubungan dengan permasalahan yang telah dipaparkan maka diperlukan sebuah
aplikasi untuk mengecilkan atau mengkompresi ukuran data atau file tersebut agar
dapat menghemat pemakaian bandwidth.
Berdasarkan uraian tersebut, pada Tugas Akhir ini akan diciptakan
sebuah aplikasi kompresi dan dekompresi file yang mudah di gunakan oleh user
lain. Aplikasi ini menggunakan kombinasi Algoritma LZ77 dan Huffman.
Aplikasi kompresi dapat menghemat ruang penyimpanan file secara optimal.
proses dekompresinya dapat mengembalikan file seperti semula isi file pun tidak

mengalami perubahan atau corrupt.
Kata kunci : kompresi, dekompresi, LZ77 dan Huffman

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

KATA PENGANTAR
Segala puji dan syukur semata di tujukan ke hadirat Allah SWT, yang telah
memberikan rahmat serta hidayah-Nya, sehingga memungkinkan penulis untuk
menyelesaikan Proyek Akhir yang berjudul:
“PEMBUATAN APLIKASI KOMPRESI FILE MENGGUNAKAN
KOMBINASI ALGORITMA LZ77 DAN HUFFMAN”
Buku Proyek Akhir ini disusun dan diajukan sebagai syarat untuk
menyelesaikan program Sarjana pada Program Studi Teknik Informatika Fakultas
Teknologi Industri di Universitas Pembangunan Nasional ”Veteran” Jawa Timur.
Dalam penyusunan Proyek Akhir ini, penulis berusaha menerapkan ilmu yang
di dapat selama menjalani proses perkuliahan yang tentu saja tidak terlepas dari
petunjuk, bimbingan, bantuan dan dukungan dari berbagi pihak.
Dengan tidak lupa akan kodratnya sebagai manusia, Penulis menyadari
bahwa karya Proyek Akhir ini masih jauh dari kesempurnaan dan mengandung

banyak kekurangan, sehingga dengan segala kerendaha hati, Penulis mengharapkan
saran dan kritik yang membangun dari pembaca.

Surabaya April 2012

Penulis

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

i

DAFTAR ISI
KATA PENGANTAR ......................................................................................... i
UCAPAN TERIMA KASIH...............................................................................ii
DAFTAR ISI ..................................................................................................... iv
DAFTAR GAMBAR......................................................................................... vi
DAFTAR TABEL ...........................................................................................viii
BAB I


PENDAHULUAN

1.1

Latar Belakang ..................................................................................... 1

1.2

Perumusan Masalah .............................................................................. 2

1.3

Batasan Masalah ................................................................................... 3

1.4

Tujuan ................................................................................................. 3

1.5


Manfaat................................................................................................. 4

1.6

Metode Penelitian ................................................................................. 4

1.7

Sistematika Penulisan ........................................................................... 5

BAB II
2.1

TINJAUAN PUSTAKA
Algorithma Dan Pemrograman ............................................................... 6
2.1.1

Internal Subrountines ............................................................... 7

2.1.2

External Subrountines .............................................................. 7

2.1.1

Pendeketan Top Down............................................................. 7

2.2

Kompresi File ...................................................................................... 10

2.3

Jenis-Jenis Kompresi File..................................................................... 12

2.4

Metode Kompresi File ......................................................................... 12

2.5

Teknik Kompresi File .......................................................................... 14

2.6

Algoritma Huffman .............................................................................. 15

2.7

Algoritma LZ77 ................................................................................... 18

2.8

Kombinasi Algoritma LZ77 Dan Huffman ........................................... 20

2.9

Flow Map ............................................................................................ 23

2.10

Unified Modelling Language ............................................................... 24

2.11

Sistematika Dalam UML...................................................................... 29

2.12

Notasi Dalam UML............................................................................ 321

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

iv

2.12.1

Actor ................................................................................... 31

2.12.2

Use Case.............................................................................. 31

2.12.3

Class .................................................................................... 32

2.12.4

Interface .............................................................................. 33

2.12.5

Interaction ........................................................................... 33

2.12.6

Note .................................................................................... 33

2.12.7

Dependency ......................................................................... 34

2.12.8

Association .......................................................................... 34

2.12.9

Generalization ..................................................................... 35

2.12.10

Realization .......................................................................... 35

2.13

Interaksi Manusia Dan Komputer......................................................... 35

2.14

Embarcadero RAD Studio .................................................................... 39

BAB III ANALISIS DAN PERANCANGAN
3.1

Analisis Sistem .................................................................................... 44

3.2

Analisis Masalah .................................................................................. 45

3.3

Analisis Proses Kompresi Dengan Literal Karakter .............................. 46

3.4

Use Case Diagram Aplikasi Kompresi ............................................... 50

3.5

Squence Diagram ................................................................................ 50

3.6

Perancangan Sistem ........................................................................... 52

BAB IV IMPLEMENTASI DAN PENGUJIAN
4.1

Implementasi Prosedur Kompresi......................................................... 55

4.2.

Implementasi Prosedur Dekompresi ..................................................... 57

4.3.

Pengujian Aplikasi ............................................................................... 58
4.3.1 Pengujian Kompresi File ......................................................... 59
4.3.2 Pengujian Kompresi Multi File ................................................ 62
4.3.3 Pengujian Dekompresi ........................................................... 65

4.4.

Analisa Hasil Uji Coba ......................................................................... 67

BAB V

PENUTUP

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

v

5.1

Kesimpulan ......................................................................................... 69

5.2

Saran................................................................................................... 70

DAFTAR PUSTAKA ....................................................................................... 71

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

vi

DAFTAR GAMBAR

Gambar

2.1 Representasi Teks ABACCDA ............................................... 16

Gambar

2.2 Pohon Huffman Untuk Teks ABACCDA ............................... 16

Gambar

2.3 Metode UML.......................................................................... 26

Gambar

2.4 Notasi Actor ........................................................................... 31

Gambar

2.5 Notasi Use Case...................................................................... 31

Gambar

2.6 Notasi Class............................................................................ 32

Gambar

2.7 Notasi Interface ...................................................................... 33

Gambar

2.8 Notasi Interaction ................................................................... 33

Gambar

2.9 Notasi Note ............................................................................ 33

Gambar

2.10 Notasi dependency.................................................................. 34

Gambar

2.11 Notasi Asociation ................................................................... 34

Gambar

2.12 Notasi Generalization ............................................................. 35

Gambar

2.13 Notasi Realization .................................................................. 35

Gambar

2.14 Hubungan Antar Muka Manusia Dan Komputer .................... 36

Gambar

2.15 Tampilan Awal Delphi ............................................................ 40

Gambar

2.16 Daftar Komponen Palet Standart Delphi ................................. 41

Gambar

2.17 Daftar Komponen Palet Additional ......................................... 41

Gambar

2.18 Daftar Komponen Palet Win 32 ............................................. 42

Gambar

2.19 Daftar Komponen Palet Sistem ............................................... 42

Gambar

2.20 Daftar Komponen Palet Dialog ............................................... 42

Gambar

2.21 Membuat Aplikasi Sederhana Delphi ...................................... 43

Gambar

3.1 Pohon Huffman ...................................................................... 49

Gambar

3.2 Use Case Aplikasi Kompresi .................................................. 50

Gambar

3.3 Squence Diagram Proses Kompresi ........................................ 51

Gambar

3.4 Squence Diagram Proses Dekompresi ..................................... 52

Gambar

3.5 Tampilan awal Program .......................................................... 53

Gambar

3.6 From Utama Program Kompresi ............................................. 54

Gambar

4.1 Daftar Nama File Yang Menjadi Bahan Pengujian ................. 58

Gambar

4.2 Percobaan Dengan Single File ................................................ 59

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

vii

Gambar

4.3 Penentuan Lokasi Penyimpanan .............................................. 59

Gambar

4.4 Hasil Proses Kompresi File Huffman.txt ................................. 60

Gambar

4.5 Isi Hasil Proses Kompresi File Huffman.txt ............................ 60

Gambar

4.6 Hasil Proses Kompresi File Blutut.pdf .................................... 60

Gambar

4.7 Isi Hasil Proses Kompresi File Blutut.pdf ............................... 61

Gambar

4.8 Hasil Proses Kompresi File Info.doc ....................................... 61

Gambar

4.9 Isi Hasil Proses Kompresi File Info.doc .................................. 61

Gambar

4.10 Hasil Proses Kompresi File Man.ppt ..................................... 62

Gambar

4.11 Isi Hasil Proses Kompresi File Man.ppt .................................. 62

Gambar

4.12 Percobaan Kompresi Multiple File.......................................... 63

Gambar

4.13 Hasil Proses Kompresi Multiple File....................................... 63

Gambar

4.14 Isi Hasil Proses kompresi multiple File .................................. 64

Gambar

4.15 Proses Dekompresi File Hasil NewBox.zip ............................ 65

Gambar

4.16 Pemilihan Lokasi Dekompresi ................................................ 65

Gambar

4.17 Hasil Proses Dekompresi File Kedua.zip ................................ 65

Gambar

4.18 Isi Hasil Proses dekompresi multiple File .............................. 66

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

viii

DAFTAR TABEL

Tabel

2.1 Kode Huffman Untuk ABACCDA............................................... 17

Tabel

2.2 Pencatatan Codewords Prefiks Huffman Statis Untuk LDL ......... 22

Tabel

2.3 Pencatatan Affiks Codewords Huffman Statis .............................. 22

Tabel

2.4 Pencatatan Codewords huffman Statis untuk Indikasi Jarak ......... 23

Tabel

3.1 Kode Dictionary huffman ............................................................ 49

Tabel

4.1 Pencatatan analisa File Asli Dan Hasil Kompresi ......................... 68

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

ix

BAB I
PENDAHULUAN

1.1.

Latar Belakang
Perkembangan penggunaan komputer yang semakin meningkat dalam

berbagai bidang berkontribusi pada semakin bervariasinya format data yang
disimpan oleh pengguna. Format data tersebut meliputi data teks, audio dan video
serta kombinasi diantara ketiganya yang lazim disebut data multimedia.
Disamping itu frekuensi penggunaan data secara bersama-sama turut
serta membantu pengembangan jaringan komputer menjadi semakin kompleks
pada sehingga penggunaan bandwith menjadi semakin sempit untuk saling
berkirim data. Kondisi yang sering ditemui adalah pada saat mengirim data atau
file tentu akan menggunakan bandwidth yang besar apabila ukuran file yang akan
dikirim juga besar, sehingga proses pengiriman data akan mempengaruhi
kesibukan pada jaringan dan akan membuat pengiriman data atau file menjadi
lama. Hal ini akan menjadi permasalah yang serius dan berkepanjangan dan
mengganggu sistem jaringan. Sehubungan dengan permasalahan yang telah
dipaparkan

maka

diperlukan

sebuah

aplikasi

untuk

mengecilkan

atau

mengkompresi ukuran data atau file tersebut agar dapat menghemat pemakaian
bandwidth.
Secara spesifik, kompresi data atau file bertujuan untuk mereduksi
tempat (space) penyimpanan data atau file dan mereduksi waktu untuk
mentransmisikan data atau file yang memiliki kapasitas besar. Dengan

1
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

2

memanfaatkan teknik kompresi ini, maka proses pengiriman data atau file akan
menjadi lebih maksimal dan mereduksi waktu transfer file.
Sejak era 1940-an, mulai dipikirkannya suatu metode untuk memperkecil
ukuran data atau kompresi. Hal ini menunjukkan bahwa di masa lalu, para pakar
juga telah memprediksi pertumbuhan data yang akan semakin besar.
Terdapat banyak metode kompresi, tetapi secara umum mempunyai
teknik yang terbagi menjadi dua kategori yaitu lossy compression dan lossless
compression. Masing-masing teknik tersbut mempunyai kekhasan sendiri
terhadap data yang menjadi obyek kompresinya.
Pada teknik lossy compression, lebih tepat digunakan pada obyek data
audio, video dan citra digital, sedangkan teknik lossless compression lebih tepat
digunakan pada data dokumen yang banyak mengandung teks daripada data
multimedia karena mampu mempertahankan kebutuhan informasi yang dikandung
oleh data.
Berdasarkan uraian tersebut, pada Tugas Akhir ini akan dirancang sebuah
aplikasi kompresi dan dekompresi data secara dengan menggunakan Algoritma
kombinasi LZ77 dan Huffman pada localhost. Penggunaan kedua algoritma ini
karena sifatnya yang Loseless dimana data atau file hasil kompresi dapat
didekompres lagi dan hasilnya tepat sama seperti data atau file sebelum proses
kompresi.

1.2.

Perumusan Masalah
Rumusan masalah yang digunakan dalam tugas akhir ini adalah :

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

3

Bagaimana

membuat

aplikasi

kompresi

data

atau

file

dengan

menggunakan kombinasi algorithma LZ77 dan Huffman ?

1.3.

Batasan Masalah
Dalam tugas akhir ini batasan masalah yang dipergunakan yaitu :
a. Algoritma yang digunakan adalah Kombinasi Algoritma LZ77 dan
Huffman.
b. Diterapkan pada localhost
c. Data atau file yang dikirim akan terkompresi.
d. Data atau file diproses secara antrian (FIFO).
e. Karena bersifat lossless, data yang dikompresi ditujukan pada data
dokumen (file teks, office document dan pdf) bukan format data yangg
termasuk dalam citra digital, maupun video.

1.4.

Tujuan
Tujuan yang ingin dicapai pada pengerjaan tugas akhir ini adalah:
a. Membangun perangkat lunak dengan kombinasi algoritma LZ77 dan
Huffman untuk mencapai hasil yang optimal.
b. Menciptakan perangkat

lunak yang dapat menghemat ruang

penyimpanan data atau menperkecil ukuaran file dan mudah di
operasikan.
c. Menbangun perangkat lunak yang dapat Mengkompresi dan
Dekompresi.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

4

1.5.

Manfaat
Adapun manfaat yang ingin diperoleh dari pengerjaan tugas akhir ini

adalah dapat membuat perangkat lunak untuk

mempermudah pengguna

menyimpan data dengan menghemat ruang penyimpan dan mempercepat proses
transfer file.

1.6.

Metode Penelitian
Adapun metode penelitian yang dipergunakan dalam pengerjaan tugas

akhir ini adalah :
a. Studi Literatur
Mencari referensi dan bahan pustaka tentang teori-teori yang berhubungan
dengan permasalahan yang akan dikerjakan dalam tugas akhir ini.
b. Studi Kasus
Mencari contoh-contoh kasus serupa yang berhubungan dengan permasalahan
dalam tugas akhir ini.
c. Analisa Permasalahan Dan Perancangan Sistem
Melakukan analisa permasalahan dan membuat perancangan sistem yang
termasuk rancangan form atau antar muka
d. Implementasi Dan Pengujian
Menerapkan hasil perancangan ke dalam pembuatan sistem (coding) dan
melakukan pengujian untuk mengetahui validitas hasil.
e. Evaluasi
Melakukan evaluasi hasil implementasi dan pengujian dalam bentuk
kesimpulan dan saran.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

5

1.7.

Sistematika Penulisan
Sistematika penulisan tugas akhir ini disusun untuk memberikan gambaran

umum tentang penelitian yang dijalankan. Sistematika penulisan tugas akhir ini
adalah sebagai berikut :
BAB I

PENDAHULUAN
Bab ini berisi latar belakang masalah, identifikasi masalah, maksud
dan tujuan yang ingin dicapai, batasan masalah, metodologi
penelitian yang diterapkan dalam memperoleh dan mengumpulkan
data, waktu dan tempat penelitian, serta sistematika penulisan.

BAB II

TINJ AUAN PUSTAKA
Membahas berbagai konsep dasar dan teori-teori yang berkaitan
dengan topik masalah yang diambil dan hal-hal yang berguna
dalam proses analisis permasalahan.

BAB III

ANALISIS DAN PERANCANGAN
Menganalisis masalah dari model penelitian untuk memperlihatkan
keterkaitan antar proses yang diteliti serta model matematis untuk
analisisnya.

BAB IV

IMPLEMENTASI DAN PENGUJ IAN
Membahas mengenai pengimplementasian aplikasi yang telah
dibuat ke perangkat yang akan digunakan serta melakukan
pengujian terhadap aplikasi yang telah diimplementasikan tersebut.

BAB V

PENUTUP
Berisi kesimpulan dan saran yang sudah diperoleh dari hasil
penulisan tugas akhir.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

BAB II
TINJ AUAN PUSTAKA

2.1.

Algorithma Dan Pemr ograman
Pada era tahun 1950 –1960, kecepatan komputer sangat rendah dan

disertai juga dengan keterbatasan dari media penyimpan, sehingga tentunya
berakibat juga dengan keterbatasan dalam penulisan program-program komputer.
Namun di era saat ini, dengan kecepatan komputer yang cukup handal demikian
juga ketersediaan dari media penyimpan yang cukup handal dan besar, serta
didukung juga dengan perkembangan bahasa pemrograman yang ada sehingga
kita dapat dengan mudah membuat suatu program. Permasalahan yang timbul
dalam pembuatan program tersebut adalah bagaimana kita dapat memahaminya,
sehingga apabila terdapat perubahan yang akan dilakukan kita dapat
memperbaikinya secara mudah. Hal ini tentu saja harus kita perhatikan terutama
apabila kita melihat dari biaya yang harus dikeluarkan dalam pembuatan program
tersebut. Istilah Pemrograman Terstruktur (Structured Programming) mengacu
dari suatu kumpulan tehnik yang dikemukan oleh Edsger Dijkstra. Dengan tehnik
ini akan meningkatkan produktifitas programmer, dengan mengurangi waktu yang
dibutuhkan dalam penulisan (write), pengujian (test), penelusuran kesalahan
(debug) dan pemeliharan(maintain) suatu program. Pada pembahasan berikut ini
kita akan melihat bagaimana tehnik ini yang pendekatan yang dilakukan secara
modular, dapat membantu kita dalam membangun suatu program.
Dalam pemrograman secara modular, suatu program akan dipilah
kedalam sejumlah modul, dimana setiap modul menjalankan fungsinya sendiri.
6
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

7

Tentunya fungsi yang dijalankan oleh setiap modul sangat terbatas sesuai dengan
ruang lingkup yang akan dikerjakan. Dengan adanya sejumlah modul program ini
tentu saja kesalahan yang timbul dapat dikurangi. Setiap program tentu akan
memiliki program utamanya, yang kemudian akan memanggil sejumlah modulmodul yang ada.
Pemrograman secara modular ini dapat diimplementasikan dengan
penggunaan subroutine, suatu kelompok instruksi yang menjalankan suatu
pengolahan yang sifatnya terbatas seperti pencetakan, pembacaan untuk proses
input atau untuk proses penghitungan. Subroutine dapat dikelompokkan menjadi
internal subroutine dan external subroutine.
2.1.1. Inter nal Subroutines
Adalah bagian dari suatu program yang digunakan. Dideklarasikan cukup
sekali saja, untuk sejumlah proses yang sama akan dilakukan oleh program
tersebut. Program akan memanggil subroutines tersebut jika diperlukan dan
apabila telah selesai, kontrol selanjutnya dikembalikan ke instruksi berikutnya.
Instruksi yang mengendalikan kontrol transfer ke suatu subroutine umumnya
dikenal sebagai call dan return.
2.1.2. Exter nal Subroutines
Diletakkan secara terpisah dari program yang menggunakan subroutine
tersebut. Subroutine ini dideklarasikan supaya bisa dipakai oleh program yang
lain. Untuk menggunakannya tentu seorang programmer harus mengetahui
dimana ? , apa namanya ?, bagaimana pengiriman datanya ?, bagaimana jawaban
yang akan diperoleh ?. Subroutine ini biasanya digunakan untuk pemrosesan yang
komplek, yang dibutuhkan oleh banyak user.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

8

2.1.3. Pendekatan Top Down
Pemrograman terstruktur mempergunakan Pendekatan Top-Down dalam
perencanaan program. Merupakan pendekatan yang menggambarkan pemecahan
modul kompleks/besar menjadi modul-modul yang lebih sederhana/kecil
Berbentuk Struktur Hirarki. Di dalam pemrograman terstruktur, terdapat 3 bentuk
struktur perintah yang dipergunakan :
a.

Sequence Structure

b.

Loop Structure

c.

Selection Structure
Struktur perintah yang instruksinya dieksekusi berdasarkan urutannya.

Dimulai dari bagian atas dan diakhiri di bagian bawahnya. Digambarkan dengan
bujur sangkar, sebagai simbol untuk : Input dan Output Operasi aritmatika.
Operasi pemindahan data dalam memori komputer. Menggambarkan perulangan
eksekusi dari satu atau lebih instruksi Menggambarkan struktur yang
mengeksekusi suatu instruksi hanya apabila kondisinya terpenuhi.
Algoritma merupakan sekumpulan langkah-langkah untuk menyelesaikan
suatu tugas. Penamaan “Algoritma” diambil dari seorang ahli matematika
bernama Al-Khwarizmi. Sebuah algoritma harus:
a. Jelas, tepat dan tidak membingungkan
b. Memberikan penyelesaian yang tepat
c. Mempunyai akhir
Tujuh langkah dasar dalam pengembangan program :
a. Definisi Masalah
b. Outline Solusi

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

9

c. Pengembangan outline ke dalam algoritma
d. Melakukan test terhadap algoritma
e. Memindahkan algoritma ke dalam bahasa pemrograman
f. Menjalankan program pada komputer
g. Dokumentasi dan pemeliharaan program
h. Pada tahap ini memerlukan pemahaman terhadap permasalahan dengan
membaca berulang kali sampai dengan mengerti apa yang dibutuhkan.
Setelah permasalahan didefinisikan, permasalahan dapat di bagi kedalam
tugas tugas atau langkah langkah yang lebih kecil dan menghasilkan outline
solusi. Outline solusi pada langkah kedua dikembangakan menjadi algoritma yaitu
sebuah set langkah yang menggambarkan tugas yang akan dikerjakan dan urutan
pengerjaannya.
Tujuan utama dari melakukan test terhadap algoritma adalah adalah
untuk menemukan kesalahan utama logika sejak awal, sehingga akan lebih mudah
diperbaiki. Data test diperlukan untuk melakukan test terhadap algoritma ini.
Setelah ke-empat langkah sebelumnya dilakukan, maka pencodingan dapat
dimulai dengan menggunakan bahasa pemrograman yang dipilih. Setelah
pengcodingan, maka program dapat dijalankan pada komputer. Jika Program
sudah didesain dengan baik, maka akan mengurangi tingkat kesalahan dalam
melakukan testing program. Langkah ini perlu dilakukan beberapa kali, sehingga
program yang dijalankan dapat berfungsi dengan benar. Dokumentasi melibatkan
eksternal dokumentasi (hierarchy chart, algoritma solusi, dan hasil data test) dan
internal dokumentasi (coding program). Pemeliharaan program meliputi

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

10

perubahan yang dialami oleh program (perbaikan ataupun penambahan modul,
dan lain-lain).

2.2.

Kompresi File
Sistem komunikasi dirancang untuk mentransmisi informasi yang

dibangkitkan oleh sumber ke beberapa tujuan. Sumber informasi mempunyai
beberapa bentuk yang berbeda. Sebagai contoh, dalam radio broadcasting, sumber
biasanya sumber audio (suara atau music). dalam TV broadcasting, sumber
informasi biasanya sebuah sumber video yang keluarannya berupa image
bergerak. Output dari sumber-sumber ini adalah sinyal analog dan sumbernya
disebut sumber analog.
Kontras dengan komputer dan tempat penyimpanan data (storage) seperti
disk magnetic atau optical, menghasilkaan ouput berupa sinyal diskrit (biasanya
karakter binary atau ASCII). Sinyal yang menjadi sumbernya biasa disebut
dengan sumber diskrit. baik sumber analog maupun diskrit, sebuah komunikasi
digital dirancang untuk mentransmisi informasi dalam bentuk digital. Sehingga
konsenkuensi keluaran dari sumber harus diubah dahulu menjadi bentuk keluaran
sumber digital yang biasanya dilakukan pada source encoder. Keluaran dari
sumber tersebut dapat diasumsikan menjadi sebuah digit biner sekuensial.
Pada akhir tahun 40-an dimana dimulainya tahun teori informasi, ide
pengembangan metode coding yang efesien baru dimulai dan dikembangkan.
Dimulainya penjelajahan ide dari entropy, information content dan redudansi.
Salah satu ide yang popular adalah apabila probabilitas dari simbol dalam suatu
pesan diketahui, maka terdapat cara untuk mengkodekan simbol, sehingga pesan

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

11

memakan tempat yang lebih kecil. Ide inilah yang menjadi cikal bakal dalam
terciptanya kompresi data.
Model pertama yang muncul untuk kompresi sinyal digital adalah
Shannon-Fano coding. Shannon dan fano (1948) terus menerus mengembangkan
algoritma ini yang menghasilkan codeord biner untuk setiap symbol (unik) yang
terdapat pada data file.
Huffman coding (1952) memakai hampir semua karakteristik dari
Shannon-fano coding. Huffman coding dapat menghasilkan kompresi file yang
efektif dengan mengurangkan jumlah redudansi dalam mengkodingkan simbol.
Telah dapat dibuktikan, bahwa Huffman coding merupakan metode fixed-length
yang paling efesien.
Pada limabelas tahun terakhir, Huffman coding telah digantikan oleh
Arithmetic coding. Arithmetic coding melewatkan ide untuk menggantikan
sebuah simbol masukan dengan kode yang spesifik. Algoritma ini menggantikan
sebuah aliran simbol masukan dengan sebuah angka keluaran single floatingpoint. Lebih banyak bit dibutuhkan dalam angka keluaran, maka semakin rumit
pesan yang diterima.
Algoritma dictionary-based compression menggunakan metode yang
sangat berbeda dalam mengkompres file. Algoritma ini menggantikan string
variable-length dari simbol menjadi sebuah token. Token merupakan sebuah indek
dalam susunan kata di kamus. Apabila token kecil dari susunan kata, maka token
akan menggantikan prase tersebut dan kompresi pun terjadi.
Kompresi file (pemampatan file) merupakan suatu teknik untuk
memperkecil jumlah ukuran data (hasil kompresi) dari data aslinya. Pemampatan

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

12

data umumnya diterapkan pada mesin komputer, hal ini dilakukan karena setiap
simbol yang muncul pada komputer memiliki nilai bit-bit yang berbeda. Misal
pada ASCII setiap simbol yang dimunculkan memiliki panjang 8 bit, misal kode
A pada ASCII mempunyai nilai decimal 65, jika dirubah dalam bilangan biner
menjadi 010000001. Pemampatan data digunakan untuk mengurangkan jumlah
bir-bit yang dihasilkan dari setiap simbol yang muncul. Dengan pemampatan ini
diharapkan dapat mengurangi (memperkecil ukuran data) dalam ruang
penyimpanan.

2.3.

J enis-jenis Kompr esi File

Berdasarkan mode penerimaan data oleh manusia, kompresi data dapat dibagi
menjadi dua, yaitu :
a. Dialoque Mode
yaitu proses penerimaan data dimana pengirim dan penerima seakan berdialog
(real time), dimana kompresi data harus berada dalam batas penglihatan dan
pendengaran mausia. Contohnya pada video conference.
b. Retrieval Mode
yaitu proses penerimaan data tidak dilakukan secara real time. Jenis kompresi
ini dapat dilakukan random access terhadap data dan dapat bersifat interaktif.

2.4.

Metode Kompr esi File
Berdasarkan tipe peta kode yang digunakan untuk mengubah pesan awal

(isi file input) menjadi sekumpulan codeword, metode kompresi terbagi menjadi
dua kelompok, yaitu :

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

13

a. Metode Statik
Menggunakan peta kode yang selalu sama. Metode ini membutuhkan dua
fase (two-pass) : fase pertama untuk menghitung probabilitas kemunculan tiap
simbol/karakter dan menentukan peta kodenya dan fase kedua untuk mengubah
pesan menjadi kumpulan kode yang akan ditransmisikan. Contohnya pada
Huffman static, arithmetic coding
b. Metode Dinamik (adaptif)
Menggunakan peta kode yang dapat diubah dari waktu ke waktu. Metode
ini disebut adaptif karena peta kode mampu beradaptasi terhadap karakteristik isi
file selama proses kompresi berlangsung. metode ini bersifat onepass, karena isi
file selama dikompres hanya diperlakukan satu kali pembacaan terhadap isi file.
Contohnya pada algoritma LZW dan DMC.
Berdasarkan teknik pengkodean atau

pengubahan

simbol yang

digunakan, metode kompresi dapat dibagi ke dalam tiga kategori, yaitu :
a. Metode simbolwise
Menghitung peluang kemunculan dari tiap simbol dalam file input, lalu
mengkodekan satu simbol dalam satu waktu, dimana simbol yang lebih sering
muncul diberi kode lebih pendek dibandinglan simbol yang lebih jarang muncul.
Contohnya pada Huffman coding, arithmetic coding.
b. Metode dictionary
Menggantikan karakter/fragmen dalam file input dengan indeks lokasi
dari karakter/fragmen tersebut dalam sebuah kamus (dictionary). Contohnya pada
algoritma LZW.
c. Metode predictive

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

14

Menggunakan model finite-context atau finite-state untuk memprediksi
distribusi probabilitas dari simbol-simbol selanjutnya. Contohnya pada algoritma
DMC

2.5.

Teknik Kompresi File
Teknik kompresi data dapat digolongkan menjadi dua kelompok utama

yaitu : lossy dan lossless. Teknik kompresi secara lossy dimaksudkan dengan
teknik kompresi data dengan menghilangkan ketelitian data utama guna
mendapatkan data sekecil mungkin (kompresi data sebesar mengkin). Teknik
kompresi data secara lossless yaitu teknik kompresi data dengan mengurangkan
jumlah data yang terjadi redudansi (memiliki symbol yang sama) sebelum terjadi
kompresi.
a. Lossy Compression
Merupakan teknik kompresi yang menghilangkan beberapa informasi
data yang dianggap tidak penting. Sehingga hasil data yang telah terkompresi
tidak sama dengan data yang sebelum dikompresi. Namun data yang telah
terkompresi tersebut sudah cukup untuk digunakan, walaupun datanya telah
berubah. Keunggulan dari teknik ini adalah file atau data yang telah terkompresi
memiliki ukuran yang lebih kecil dari ukuran data aslinya. Biasanya teknik
kompresi ini banyak diaplikasikan pada data gambar dan data audio.
b. Lossless Compression
Merupakan teknik kompresi yang mempertahankan kebutuhan informasi
yang dikandung oleh data, sehingga informasi yang terkandung pada file yang
telah terkompresi tetap terjaga meskipun ukurannya telah berubah dari ukuran

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

15

data aslinya. Keunggulan dari teknik ini adalah data yang telah terkompresi,
apabila didekompresi kembali akan menghasilkan data yang sama persis dengan
data aslinya. Biasanya teknik kompresi ini banyak diaplikasikan pada data teks.

2.6.

Algorithma Huffman
Algoritma Huffman ditemukan oleh David Huffman pada tahun 1952.

Algoritma ini menggunakan pengkodean yang mirip dengan kode Morse [7].
Berdasarkan tipe kode yang digunakan algoritma Huffman termasuk metode
statistic. Sedangkan berdasarkan teknik pengkodeannya menggunakan metode
symbolwise. Algoritma Huffman merupakan salah satu algoritma yang digunakan
untuk mengompres teks. Berikut ini ilustrasi algoritma Huffman dengan
menggunakan file teks yg berisi “ABACCDA

:

a. Pilih dua simbol dengan peluang (probability) paling kecil (pada contoh di
atas simbol B dan D). Kedua simbol tadi dikombinasikan sebagai simpul
orangtua dari simbol B dan D sehingga menjadi simbol BD dengan peluang
1/7 + 1/7 = 2/7, yaitu jumlah peluang kedua anaknya.
b. Selanjutnya, pilih dua simbol berikutnya, termasuk simbol baru, yang
mempunyai peluang terkecil.
c. Ulangi langkah 1 dan 2 sampai seluruh simbol habis.
Sebagai contoh, dalam kode ASCII string 7 huruf “ABACCDA”
membutuhkan representasi 7 × 8 bit = 56 bit (7 byte), dengan rincian sebagai
berikut:

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

16

Gambar 2.1. Representasi Teks ABACCDA
Untuk mengurangi jumlah bit yang dibutuhkan, panjang kode untuk tiap
karakter

dapat

dipersingkat,

terutama

untuk

karakter

yang

frekuensi

kemunculannya besar. Pada string di atas, frekuensi kemunculan A = 3, B = 1, C
= 2, dan D = 1, sehingga dengan menggunakan algoritma di atas diperoleh kode
Huffman seperti pada Tabel 2.1

Gambar 2.2. Pohon Huffman untuk Teks ABACCDA

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

17

Tabel 2.1. Kode Huffman untuk “ABACCDA”

Dengan menggunakan kode Huffman ini,

string “ABACCDA”

direpresentasikan menjadi rangkaian bit : 0 110 0 10 10 111 0. Jadi, jumlah bit
yang dibutuhkan hanya 13 bit dari yang seharusnya dibutuhkan 56 bit. Untuk
menguraikan kembali data yang sudah dikodekan sebelumnya dengan algoritma
Huffman, dapat digunakan cara sebagai berikut :
1. Baca bit pertama dari string biner masukan
2. Lakukan traversal pada pohon Huffman mulai dari akar sesuai dengan bit
yang dibaca. Jika bit yang dibaca adalah 0 maka baca anak kiri, tetapi jika bit
yang dibaca adalah 1 maka baca anak kanan.
3. Jika anak dari pohon bukan daun (simpul tanpa anak) maka baca bit
berikutnya dari string biner masukan.
4. Hal ini diulang (traversal) hingga ditemukan daun.
5. Pada daun tersebut simbol ditemukan dan proses penguraian kode selesai.
6. Proses penguraian kode ini dilakukan hingga keseluruhan string biner
masukan diproses.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

18

2.7.

Algorithma LZ77
LZ77 merupakan algoritma kompresi file lossless yang dikembangkan

oleh dua orang ilmuan komputer yang bernama Abraham Lempel dan Jacob Ziv
pada tahun 1977. Inti dari algoritma LZ77 adalah string matching di mana sebuah
string panjang dibagi menjadi 2 blok yaitu Sliding Window dan Read Ahead atau
Look Ahead.
Pencarian kata (string matching) dilakukan dengan mencocokkan string
pada String Ahead dengan string pada Sliding Window. Jika sama, maka dibentuk
kode yang terdiri dari pasangan offset dan length dan akan disalin ke file output.
Setelah itu indeks awal Sliding Window akan bergeser ke kanan sebanyak lenght
adalah panjang karakter yang ditemukan sama dikurangi 1. Jika isi Read Ahead
dukurangi 1. Jika masih tidak ditemukan kesamaan hingga panjang isi dari Read
Ahead = 2 maka isi Read Ahead akan disalin ke file output dan indeks awal Siling
Window akan bertambah 2. Berikut contoh penyelesaian suatu kasus dengan
metode LZ77.
Contoh sebuah string : AAAAAAABCABCAAAAA
Sliding Window (bergaris bawah) : AAAAAAABCA
Read Ahead (dicetak tebal) : BCAAAAA
Karena isi Read Ahead tidak sama dengan Sliding Window maka indeks
akhir Read Ahead akan dikurangi 1 menjadi BCAAAA. Karena masih tidak
ditemukan kesamaan, maka indeks akhir Read Ahead akan dikurangi terus hingga
menjadi :
Sliding Window : AAAAAAABCA
Read Ahead : BCA

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

19

Karena isi Read Ahead terhadap kesamaan dengan isi Sliding Window
maka dicari nilai offset dan length-nya. Perhitungan sebagai berikut :
Offset = indeks akhir dari Sliding Window – indeks awal rangkaian yang sama
= 10 – 8 = 2
Length = panjang karakter yang sama -1
=3–1=2
Selain itu diberikan juga flag untuk membedakan hasil dari kompresi yang mana
yang merupakan karakter literal dan kode. Di mana flag 0 untuk karakter literal
dan

flag

1

untuk

kode.

Contohnya,

hasil

kompresi

adalah

AAAAAAAAAAABCA2293. Di sini tampak jelas yang mana yang merupakan
literal(huruf) dan kode(angka). Tetapi bagaimana jika hasil kompresi adalah
222222222223922293 maka akan sangat sulit membedakan yang mana literal dan
yang mana kode. Oleh karena itu flag akan digunakan untuk menandai sebuah
literal atau kode.
Contoh :
Hasil : 222222222223922293
Flag : 000000000000001111
Flag kemudian di potong tiap 8 bit hingga menjadi 1 byte yang akan digunakan
sebagai prefix code. Contoh :
Flag : 00000000 00000011 11000000
Bagian yang dicetak tebal merupakan padding karena 1 blok harus terdiri dari 8
bit sedangkan blok tersebut hanya terdiri dari 2 bit saja. Dari flag di atas, maka
akan dicari prefix code yang merupakan bentuk desimal dari deret biner yang
dibentuk oleh flag. Maka prefix code yang dihasilkan adalah :

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

20

Flag : 00000000 00000011 11000000
Prefix code : 0 3 192
Prefix code akan diselipkan pada hasil kompresi sehingga menjadi :
02222222232223922219293

2.8.

Kombinasi Algor ithma LZ77 dan Huffman
Agar dapat dikombinasikan dengan algorithma Huffman, maka

algorithma LZ77 diubah terlebih dahulu menjadi algoritma kompresi lossless.
Metode kompresi didasarkan pada konsep bahwa string karakter dapat
mencocokkan string identik karakter dalam string yang muncul sebelumnya.
Karena itu, ini dikategorikan sebagai kompresi metode kamus. LZ77 diubah
menggunakan ukuran jendela tetap dikenal sebagai jendela geser. Algoritma
memungkinkan pencarian buffer dengan panjang sampai 32 KB. Jendela buffer
pencarian memegang catatan karakter yang telah melewati look-ahead buffer dan
tersedia untuk mencari untuk mencocokkan urutan baru karakter dalam lookahead
buffer.
Ketika urutan baru karakter, yang akan dikompresi, yang cocok dengan
string karakter dalam buffer pencarian, string yang cocok digantikan oleh dua
angka, juga dikenal sebagai token, dalam output terkompresi stream. Kedua token
menunjukkan :
1. Yang pertama: Memberikan informasi tentang jarak, tentang seberapa jauh
kembali ke pencarian buffer cocok string mulai urutan karakter.
2. Yang kedua: Memberikan informasi tentang panjang karakter string yang
dicocokkan.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

21

Karakter yang tidak cocok hanya ditulis ke kompresi stream, bukan sebuah
token. Oleh karena itu, aliran kompresi terdiri dari tiga entitas: 1. Literal
(karakter yang cocok/sama), 2. Distance (jarak offset yg cocok) dan 3. Length
(panjang string yang cocok). Dalam laporan ini, istilah untuk format ini adalah
LDL – Literal Distance Length.
Output stream dikompresi dari algoritma LZ77 kemudian akan dikodekan
dengan “statis” Huffman coding menggunakan total tiga tabel kode, dimana
satu untuk literal, distance dan length. Pengkodean yang digunakan oleh
algoritma LZ77 beroperasi pada karakter ASCII, maka ukuran huruf adalah
256. Setelah itu dianalisa dan diperiksa berulang menggunakan Algoritma
LZ77, kode baru dalam kode vektor v dibentuk setelah skema literal-distancelength (LDL). Jenis pengkodean Huffman yang dalam laporan ini adalah statis
Huffman coding. Istilah “statis” berasal dari kenyataan bahwa codewords
Huffman tidak mengubah seluruh file, yang dikodekan menggunakan
algoritma LZ77. Di sisi lain "dinamis" Huffman coding adalah kode Huffman
yang dibuat untuk masing-masing panjang blok yang digunakan oleh
algoritma LZ77. Setelah setiap blok telah diperintahkan oleh format LDL.
Dalam file kombinasi LZ77 dan huffman “statis” Huffman-encode, standar
yang sudah mendefinisikan tabel Huffman, dan sudah diimplementasikan
dalam berbagai tool kompresi. Untuk file terkompresi secara dinamis dengan
Huffman-encoded, struktur pohon harus dikirim sebagai blok yang terpisah,
yang menunjukkan pemetaan antara codewords Huffman dan literal (alfabet).
Pemetaan antara LDL dan kode Huffman adalah sebagai ditunjukkan pada
Tabel 2.1.

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

22

Seperti disebutkan, 256 pertama literal menunjukkan karakter ASCII.pada
tabel di bawah ini.
Tabel 2.2. Pencatatan Codewords Prefiks Huffman Statis untuk Semua LDL

Ini diwakili tanpa membubuhkan bit tambahan, yaitu LDL dalam kisaran
ini benar-benar didefinisikan oleh prefiks Huffman codewords. Literal 257-285
berdedikasi untuk menunjukkan panjang dari string yang cocok, sementara 286287 tidak pernah digunakan. Tergantung pada panjang simbol yang sesuai, kode
affix mungkin diperlukan, sesuai dengan Tabel 2.2. Misalnya, indikasi panjang
string simbol dari buffer pencarian yang muncul di blok saat ini dapat memiliki
panjang 120. Hal ini akan menghasilkan codeword Huffman 11000000|0110, di
mana "|" menunjukkan pemisahan antara awalan dan affix bit.
Tabel 2.3. Pencatatan Affix Codewords Huffman Statis untuk Semua Indikasi
Panjang

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

23

Kode bit terakhir ditambahkan dalam format hasil kombinasi adalah kode jarak,
yang terdaftar dalam Tabel 2.3. Sebagaimana dicatat, membubuhkan bit juga
diperlukan tergantung pada jarak. Sebuah contoh penggunaan Tabel 1.3 sekarang
dibuat A jarak 65 dalam string teks non-encoded, dikodekan sebagai
01100|00000, sedangkan jarak dari 67 hasilnya 01100|00010. Di sini, "|"
menunjukkan pemisahan antara kode Huffman dan bit ekstra.
Tabel 2.4. Pencatatan Codewords Huffman Statis untuk Semua Indikasi Jarak.

2.9.

Flow Map

Flow Map adalah diagram yang menunjukan aliran data berupa formulirformulir ataupun keterangan berupa dokumentasi yang mengalir atau beredar
dalam suatu sistem. Notasi yang digunakan dalam suatu flow map merupakan
penggabungan notasi flow chart program. Hal-hal yang harus diperhatikan
dalam menggambarkan flow map adalah sebagai berikut:
a. Penggambaran flow map dimulai dari atas halaman ke bagian bawah,
kemudian dari kiri kebagian kanan
b. Penggambaran flow map dilakukan berdasarkan pembagian atau sub
sistem

Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.

24

c. Dalam flow map harus jelas dimana awal suatu status informasi,
kemudian dimana akhir silkus
d. Semua bagian siklus informasi harus jelas Menggunakan kertas kerja
yang jelas sesuai dengan yang akan dilakukan dalam sistem
e. Semua sub sistem yang digambarkan, harus mengalami siklus informasi
f. Jika penggambaran suatu siklus informasi terpotong, maka gunakan
penghubung antar bagian.

2.10.

Unified Modelling Language
Unified Modelling Language (UML) adalah sebuah "bahasa" yang telah

menjadi standar dalam industri untuk menentukan, visualisasi, merancang dan
mendokumentasikan artifact dari sistem software, untuk memodelkan bisnis dan
sistem non software lainnya. UML merupakan suatu kumpulan teknik terbaik
yang telah terbukti sukses dalam memodelkan sistem yang besar dan kompleks.
Dengan menggunakan UML kita dapat membuat model untuk semua
j