• 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

: sinagajulita17@gmail.com

---

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

Berfikir kritis merupakan berpikir tingkat tinggi yang membutuhkan analisis dan penalaran dalam memecahkan suatu masalah.Untuk mencapai ketuntasan pada materi pokok Sistem Gerak

G3 nutrisi kurang dari kebutuhan Mual muntah Asam lambung G3 keseimbangan.

Saya adalah mahasiswa Program Studi Pendidikan Ners Fakultas Keperawatan Universitas Sumatera Utara yang melakukan penelitian dengan tujuan untuk mengidentifikasi kognitif,

Seperti hal yang dilakukan PT.Nissan melakukan rebranding terhadap brand Datsun yang sebuah brand telah lama mati untuk dimunculkan kembali di pasar otomotif Indonesia

Pada kasus hemangioma intranasal atau sinus paranasal, pendekatan dari luar ( external approach ) sering dilakukan untuk memudahkan kontrol perdarahan selama operasi

Setyorini, M.Pd selaku Ketua Program Studi Bimbingan dan Konseling Fakultas Keguruan dan Ilmu Pendidikan Universitas Kristen Satya Wacana Salatiga dan selaku

Meningkatkan Kematangan Emosioal dengan Teknik Role Play Siswa Kelas X Teknik Mesin SMK Saraswati Salatiga Semester Genap Tahun Pelajaran.. Skripsi Salatiga FKIP-

Sindrom hepatorenal merupakan suatu keadaan dimana terjadinya gangguan fungsi ginjal pada pasien dengan sirosis hepatis lanjut atau gagal hati fulminan, yang