• Tidak ada hasil yang ditemukan

Analisis Perbandingan Algoritma Elias Delta Code Dan Algoritma Unary Coding Dalam Mengkompresi File Text

N/A
N/A
Protected

Academic year: 2017

Membagikan "Analisis Perbandingan Algoritma Elias Delta Code Dan Algoritma Unary Coding Dalam Mengkompresi File Text"

Copied!
8
0
0

Teks penuh

(1)

LAMPIRAN A

LISTING PROGRAM

FUNGSI

public void StopWatchStart() {

stopWatch.Reset(); stopWatch.Start();

Cursor.Current = Cursors.WaitCursor; txtLog.Text = "";

}

public void StopWatchStop(string Title) {

stopWatch.Stop(); lblWaktu.Text = Title;

txtWaktu.Text = stopWatch.Elapsed.ToString(); Cursor.Current = Cursors.Arrow;

}

public string toBiner(int desimal, int digit) {

string biner = ""; string buf = ""; int hasilBagi = desimal; int p, sisa;

while (hasilBagi > 1) {

if (hasilBagi % 2 == 1) {

hasilBagi -= 1;

hasilBagi = hasilBagi / 2; biner = "1" + biner; }

else {

hasilBagi = hasilBagi / 2; biner = "0" + biner; }

}

biner = hasilBagi + biner;

p = biner.Length / 8; sisa = biner.Length % 8;

if (sisa != 0) p += 1;

if (biner.Length < (p * 8))

for (int i = 1; i <= (p * 8) - biner.Length; i++) buf += "0";

if (digit > 0) {

(2)

int len = biner.Count(); if (digit > len)

{

for (int i = 0; i < digit - len; i++) biner = "0" + biner;

} }

return biner; }

public int toDecimal(string biner) {

int result = 0; int num = 0;

for (int i = 1; i <= biner.Length; i++) {

num = biner[i - 1] - 48;

result += Convert.ToInt16(Math.Pow(2, biner.Length - i)) * num; }

return result; }

KARAKTER SET

public string BuatKarakterSet(String Teks) {

String R = ""; Boolean Yes;

for (int i = 0; i < Teks.Length; i++) {

Yes = false;

for (int j = 0; j < R.Length; j++) {

if (Teks[i] == R[j]) {

Yes = true; break; } }

if (Yes == false) R += Teks[i]; }

return R; }

// Hitung Frekuensi Karakter

public List<clsUnary> HitungFreqKarakter(String PT, String KS) {

List<clsUnary> R = new List<clsUnary>(); int Freq;

for (int j = 0; j < KS.Length; j++) {

Freq = 0;

(3)

{

if (KS[j] == PT[i]) Freq += 1; }

R.Add(new clsUnary(KS[j], Freq)); }

return R; }

public List<clsUnary> UrutkanKS(List<clsUnary> L, char Arah) {

char Kar; int Freq;

if (Arah == 'A') {

for (int j = 0; j < L.Count - 1; j++) for (int i = j + 1; i < L.Count; i++) if (L[j].Freq > L[i].Freq) {

Kar = L[j].Kar; Freq = L[j].Freq; L[j].Kar = L[i].Kar; L[j].Freq = L[i].Freq; L[i].Kar = Kar; L[i].Freq = Freq; }

}

else if (Arah == 'Z') {

for (int j = 0; j < L.Count - 1; j++) for (int i = j + 1; i < L.Count; i++) if (L[j].Freq < L[i].Freq) {

Kar = L[j].Kar; Freq = L[j].Freq; L[j].Kar = L[i].Kar; L[j].Freq = L[i].Freq; L[i].Kar = Kar; L[i].Freq = Freq; }

}

return L; }

public List<clsUnary> BuatKode(List<clsUnary> L) {

string temp;

for (int j = 0; j < L.Count; j++) {

temp = "";

(4)

return L; }

public List<clsUnary> BuatKodeDelta(List<clsUnary> L) {

string temp; int N, S;

for (int j = 0; j < L.Count; j++) {

temp = "";

temp += toBiner(j + 1, 0); L[j].Kode = temp.Remove(0, 1);

N = temp.Length;

L[j].Kode = toBiner(N, 0) + L[j].Kode;

S = toBiner(N, 0).Length - 1;

for (int i = 0; i < S; i++) L[j].Kode = "0" + L[j].Kode;

}

return L; }

KOMPRESI

public void Kompres() {

int Pad; Log = "";

CB = new List<string>(); CT = "";

CTB = ""; JlhBit_CT = 0;

UN = HitungFreqKarakter(PT, KS); UN = UrutkanKS(UN, 'Z');

if (rdbElias.Checked) UN = BuatKodeDelta(UN); else if (rdbUnary.Checked) UN = BuatKode(UN);

for (int j = 0; j < PT.Count(); j++) {

for (int i = 0; i < UN.Count(); i++) {

if (PT[j] == UN[i].Kar) {

CB.Add(UN[i].Kode); break;

(5)

}

// Buat Compressed Binary for (int i = 0; i < CB.Count(); i++) {

CTB += CB[i];

JlhBit_CT += CB[i].Count(); }

JlhKarCB = Convert.ToInt16(Math.Ceiling(Convert.ToDouble(JlhBit_CT) / 8));

// Buat Compressed Text string b = "";

b = CTB.Substring((JlhKarCB - 1) * 8, JlhBit_CT - ((JlhKarCB - 1) * 8)); int x = b.Length;

Pad = 8 - x;

for (int i = 0; i < Pad; i++) {

CTB += '1'; }

CBytes = new byte[JlhKarCB + 1];

for (int i = 0; i < JlhKarCB; i++) {

b = CTB.Substring(i * 8, 8);

CT += Convert.ToChar(toDecimal(b)); CBytes[i] = Convert.ToByte(toDecimal(b)); }

CT += Convert.ToChar(Pad + 48); CTB += toBiner(Pad + 48, 8);

// Simpan ke Array Byt

for (int i = 0; i < CT.Count(); i++) CBytes[i] = Convert.ToByte(CT[i]);

// Cetak Hasil

for (int i = 0; i < UN.Count; i++)

Log += UN[i].Kar + "\t" + UN[i].Freq + "\t" + UN[i].Kode + "\n";

RC = Convert.ToDouble(CTB.Count() / 8) / Convert.ToDouble(PjgTeks); RC = Convert.ToDouble(String.Format("{0:0.0000}", RC));

CR = Convert.ToDouble(CTB.Count() / 8) / Convert.ToDouble(PjgTeks) * 100; CR = Convert.ToDouble(String.Format("{0:0.00}", CR));

Red = Convert.ToDouble(PjgTeks - (CTB.Count() / 8)) / Convert.ToDouble(PjgTeks) * 100; Red = Convert.ToDouble(String.Format("{0:0.00}", Red));

txtPad.Text = Pad.ToString(); txtCTB.Text = CTB;

txtCT.Text = CT;

txtJlhBit_CT.Text = CTB.Count().ToString(); txtJlhKar_CT.Text = (CTB.Count() / 8).ToString(); txtRC.Text = RC.ToString();

txtCR.Text = CR.ToString() + " %"; txtRed.Text = Red.ToString() + " %"; txtLog.Text = Log;

(6)

DEKOMPRESI

public string CT_ke_CTB() {

CT = txtCT.Text.Trim(); // Substring(0, txtCT.Text.Length); CTB = "";

TambahBit = Convert.ToInt16(CT[CT.Count() - 1]) - 48 ;

for (int i = 0; i < CT.Count() - 1; i++) {

CTB += toBiner(Convert.ToInt16(CT[i]), 8); }

if (TambahBit > 0) {

CTB = CTB.Remove(CTB.Length - TambahBit, TambahBit); }

return CTB; }

public void Dekompres(List<clsUnary> Tabel, string CTB) {

String Hasil = ""; Log = "";

if (rdbElias.Checked) {

//CTB = txtCTB.Text;

string S = ""; string KT; char Kar = 'A'; int TC = 0; int Index = 0; Boolean Ketemu;

for (int i = 0; i < CTB.Count(); i++) {

S += CTB[i]; TC++;

Ketemu = false;

for (int j = 0; j < Tabel.Count(); j++) {

try {

if (S == Tabel[j].Kode.Substring(0, TC)) {

KT = S;

Kar = Tabel[j].Kar;

Log += "Bit " + Index + " ke " + (Index + TC - 1) + " = " + KT + "\n"; Ketemu = true;

break; } } catch { } }

(7)

if (Ketemu == false) {

Hasil += Kar; S = ""; TC = 0; Index = i; i--;

Log += "========================= Karakter : " + Kar + "\n\n"; }

}

Log += "======================= Karakter : " + Kar + "\n"; Hasil += Kar;

}

else if (rdbUnary.Checked) {

//CTB = txtCTB.Text;

string S = ""; char Kar = 'A'; int TC = 0;

for (int i = 0; i < CTB.Count(); i++) {

S += CTB[i]; if (CTB[i] == '0') {

for (int j = 0 ; j < Tabel.Count(); j++) if (S == Tabel[j].Kode)

{

Kar = Tabel[j].Kar; Hasil += Kar; break; } TC++;

Log += "Deretan Bit ke " + i + "\t: " + S + "\n" + "===================== Karakter : " + Kar + "\n";

S = ""; } } }

JlhBit_PT = (Hasil.Count() * 8);

JlhBit_CT = Convert.ToInt16(txtJlhBit_CT.Text); PjgTeks = Hasil.Count();

CR = Convert.ToDouble(JlhBit_CT / 8) / Convert.ToDouble(PjgTeks) * 100; CR = Convert.ToDouble(String.Format("{0:0.00}", CR));

Red = Convert.ToDouble(PjgTeks - (JlhBit_CT / 8)) / Convert.ToDouble(PjgTeks) * 100; Red = Convert.ToDouble(String.Format("{0:0.00}", Red));

txtCR.Text = CR.ToString() + " %"; txtRed.Text = Red.ToString() + " %";

txtPad.Text = TambahBit.ToString(); txtPT.Text = Hasil;

txtJlhKar_PT.Text = PjgTeks.ToString(); txtJlhBit_PT.Text = JlhBit_PT.ToString(); txtCTB.Text = CTB;

(8)

CURRICULUM VITAE

Data Pribadi

Nama

: Julita Sinaga

Tempat/Tanggal Lahir

: Lumban Sinaga / 17 Juli 1992

Tinggi/Berat Badan

: 154 cm / 48 kg

Agama

: Kristen

Kewarganegaraan

: Indonesia

Alamat Sekarang

: Jl. Kepodang 1 No.183 Perumnas Mandala

Telp/ Hp

: 0812 6455 2304

Email

: [email protected]

---

Riwayat Pendidikan

2013 – 2017

: S1 Extensi Ilmu Komputer Universitas Sumatera Utara

2010 – 2013

: D3 Teknik Informatika Universitas Sumatera Utara

2007 – 2010

: SMA Katolik Budi Murni 1 Medan

2004 – 2007

: SMP Negeri 2 Pangaribuan, Tapanuli Utara

1998 – 2004

: SD Negeri 173194 Pangaribuan, Tapanuli Utara

---

Pengalaman Organisasi

2011 :Panitia Natal Jurusan D3-Teknik Informatika dan S-1 Teknologi Informasi

USU.

2013 :Panitia Konser Tahunan Paduan Suara Consolatio USU ke-24 sebagai

Anggota seksi dana

2017 :Panitia Kompetisi Consolatio Goes To Marktoberdorf, Jerman sebagai Ketua

seksi dana

---

Seminar dan Pelatihan

Referensi

Dokumen terkait

Fibonaaci Code dan Inverted Elias Gamma Code merupakan jenis kompresi lossless yang digunakan dalam penelitian ini, yang mana akan diukur kinerjanya dengan

Manfaat yang diharapkan dapat dihasilkan dari penelitian ini adalah untuk mengubah ukuran file teks (*.doc) yang besar menjadi lebih kecil

Perbandingan Kinerja Algoritma Fixed Length Binary Encoding (FLBE) dengan Variabel Length Binary Encoding (VLBE) Dalam Kompresi Text File. Medan: Universitas

ToDecimal (watch.ElapsedMilliseconds)/1000,4)...

Alhamdulillah segala puji dan syukur atas nikmat kepada Allah Yang Maha Esa sehingga penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk

Setelah dilakukan implementasi dan pengujian sistem dapat diketahui bahwa, algoritma Lempel Ziv Welch mempunyai waktu kompresi, Compression Ratio(Cr), Space

Pada pengguna algoritma Stout Code dengan menggunakan aplikasi HxD, dalam penelitian ini akan membandingkan kedua algoritma karena kedua algoritma tersebut termasuk

Terjadinya pembesaran ukuran file video disebabkan oleh durasi video yang terlalu lama dan juga dari ukuran Resolusi gambar yang dihasilkan, mengakibatkan banyak orang yang