A-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) //biner = buf + biner;
A-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; for (int i = 0; i < PT.Length; i++)
A-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 = ""; for (int i = 0; i < j; i++) temp += "1"; temp += "0"; L[j].Kode = temp;
A-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;
A-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;
A-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
A-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; txtlog.text = Log;
B-1 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 2010 2013 : D3 Teknik Informatika 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 2014 : Seminar Nasional Literasi Informasi SENARAI 2012 : Training Webmater di Webmedia Training Center