LISTING PROGRAM. // // TODO: Add constructor code after the InitializeComponent() call. // }

dokumen-dokumen yang mirip
TUGAS POLA-POLA PERANCANGAN SISTEM INFORMASI PERSEWAAN VCD DAN DVD. Dengan Design pattern (Factory Method)

LAMPIRAN I LISTING PROGRAM

LISTING PROGRAM. namespace NTRUEOF { public class parameterenkripsi { public static readonly parameterenkripsi parameterenkripsi(401, 2048, 113, 60);

LISTING PROGRAM. using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms;

LISTING PROGRAM. private void pemecahankuncibutton_click(object sender, EventArgs e) { PemecahanForm form = new PemecahanForm(); form.

A-1. Listing Program. Universitas Sumatera Utara

LISTING PROGRAM. Kode Program Menu Utama:

APLIKASI MENGELOLA DATA ACCESS LOG MENGGUNAKAN C# Melihat LOG berdasar Hari, Jam, dan URL Terbanyak diakses

LISTING PROGRAM. public static BigInteger gcd(biginteger m, BigInteger n){ BigInteger r = m % n; while (r!= 0){ return gcd(n,r); } return n; }

LAMPIRAN LISTING PROGRAM

Aplikasi Transformasi Base 64 pada Kriptografi

Lampiran A-1 : Listing Program Main Form

LAMPIRAN. 2. Berapa penghasilan yang anda terima per bulan? 3. Apakah anda sering menggunakan kendaraan pribadi anda?

A-1 LISTING PROGRAM. Universitas Sumatera Utara

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

LAMPIRAN 1. Kuesioner Rating Kebutuhan Aplikasi Telepon Genggam

LISTING PROGRAM. System.IO.File.WriteAllText(direktoriawal + "/Pengirim/" + filename,

LISTING PROGRAM. 1. Bahasa Python Modulegate.py. Universitas Sumatera Utara. import sys sys.path.append("c:\skrip")

LAMPIRAN LISTING PROGRAM

IMPLEMENTASI ALGORITMA KRIPTOGRAFI HILL CIPHER DAN KOMPRESI DATA MENGGUNAKAN ALGORITMA LEVENSTEIN DALAM PENGAMANAN FILE TEKS SKRIPSI

Jeffrey Hermanto Halimsetiawan tutorialpemrograman.wordpress.com 22 Maret 2009

LAMPIRAN. Kelompok kami melakukan teknik wawancara sebanyak dua kali, di awal masa

LAMPIRAN 1. namespace TS_Eka { public partial class MainForm : Form { public MainForm() { InitializeComponent(); }

IMPLEMENTASI DAN ANALISIS KINERJA ALGORITMA SHANNON- FANO UNTUK KOMPRESI FILE TEXT

LAMPIRAN L.1. Lampiran 1 Coding Inisialisasi Program

CHAPTER #7 APLIKASI WINDOWS FORM 2 (KONTROL- KONTROL TINGKAT LANJUT)

LISTING PROGRAM. Public m, n, i, j, result1, cocok1, mpnext(0 To 255) As Integer

BAB III PERANCANGAN ALAT

PERBANDINGAN ALGORITMA EVEN-RODEH CODE DAN ALGORITMA VARIABLE LENGTH BINARY ENCODING (VLBE) PADA KOMPRESI FILE TEKS SKRIPSI

LAMPIRAN 1 SISTEM PENDUKUNG KEPUTUSAN..., DIMAS ANGGIT WIJIATMOKO, F.TEKNIK UMP,2017

BAB 2 TINJAUAN PUSTAKA

STUDI PERBANDINGAN KOMPRESI MENGGUNAKAN METODE SHANNON FANO DAN UNARY CODING PADA FILE TEKS EUNIKE JOHANA

Pengenalan JavaScript

JAVA BASIC PROGRAMMING Joobshet

BAB 2 TINJAUAN PUSTAKA

BAHASA PEMROGRAMAN JAVA

Praktikum JTable. Gambar 1

Koneksi Sederhana Database dengan C# (Lihat, Tambah, dan Hapus Data)

DAFTAR PUSTAKA DESAIN BALOK LENTUR DENGAN GRAPHICAL USER INTERFACE (GUI) DALAM PERANGKAT PENGEMBANG PEMROGRAMAN DAFTAR PUSTAKA

BAB II MICROSOFT VISUAL STUDIO

IMPLEMENTASI DAN ANALISIS KINERJA ALGORITMA ARIHTMETIC CODING DAN SHANNON-FANO PADA KOMPRESI CITRA BMP

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

BAB III PERANCANGAN SISTEM

Praktikum Pengolahan Citra - Pertemuan 1

PERANCANGAN SISTEM PENGAMANAN DAN KOMPRESI DATA TEKS DENGAN FIBONACCI ENCODING DAN ALGORITMA SHANNON-FANO SERTA ALGORITMA DEFLATE SKRIPSI

BAB IV IMPLEMENTASI DAN PENGUJIAN

Implementasi Kelas BitArray Untuk Penyelesaian Bilangan Prima Kustanto 1)

LISTING PROGRAM. 1. Form Menu Utama. Universitas Sumatera Utara

Pengenalan APLIKASI DATABASE

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

Lecturer: Abdusy Syarif. Undergraduate Course Informatics Engineering Dept. Universitas Mercu Buana. Tipe Data

Eky Pratama Halim [TUTORIAL UNIT TESTING WORLD MART DENGAN VISUAL STUDIO 2010] Langkah-langkah melakukan UNIT TESTING dengan Visual Studio 2010

Badiyanto, S.Kom., M.Kom. PBO java

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

BAB 1 PENDAHULUAN Latar Belakang

LAMPIRAN A : LISTING PROGRAM

BAB 6 KESIMPULAN DAN SARAN

BAB 2 LANDASAN TEORI

visit :

BAB IV HASIL DAN PEMBAHASAN

AP2B Dini Triasanti STRUKTUR PEMROGRAMAN PYTHON

BAB IV PEMBUATAN DAN PENGUJIAN

STRUKTUR PEMROGRAMAN PYTHON

BAB 2 TINJAUAN PUSTAKA

LAMPIRAN. Dim WithEvents diagnosa As New DB_MYSQL Dim sql = "select * from gejala order by kode asc"

Vigenere Minimum-Prime Key-Adding Cipher

Membuat Slide Show Gambar

Tugas II II5166 (Keamanan Informasi Lanjut)

Universitas Komputer Indonesia. Pemrograman dengan C++ Builder 2004 Taryana S.

LAMPIRAN 1. Berikut ini adalah hasil wawancara pakar dengan Kepala Kelompok Teknisi Stasiun

Pertemuan ke-3 TEKNIK-TEKNIK BAHASA PEMROGRAMAN

TUGAS AKHIR PEMOGRAMAN VISUAL APLIKASI PETERNAKAN AYAM BERBASIS JAVA DI PETERNAKAN AYAM MANDIRI

BAB 2 LANDASAN TEORI

Membuat Slide Show Gambar

BAB V IMPLEMENTASI DAN PEMBAHASAN. Beberapa Spesifikasi hadware dan software yang harus di perhatikan yaitu :

Membuat Webservice Pada Visual Studio 2012 (C#.NET ver.4.5)

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)

BAB IV IMPLEMENTASI SISTEM

Pemrograman Database Java

Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom

Backup dan Restore Database SQL Server 2005 Lewat Aplikasi Backup

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

ANALISIS PERBANDINGAN KOMPRESI FILE VIDEO DENGAN MOTION PICTURE EXPERT GROUP-4 DAN FLASH VIDEO DENGAN MENGGUNAKAN ALGORITMA HUFFMAN SKRIPSI

Program Piano. Kenapa penanganan event keyboard ini sangat penting?

BAB IV IMPLEMENTASI. Perangkat keras yang digunakan adalah seperangkat komputer dengan spesifikasi sebagai berikut:

BAB Argument Command-Line dan System Properties

Program Piano 1 Oktaf

SUMBER BELAJAR PENUNJANG PLPG

BAB 4 PROTOKOL TCP UDP - REMOTE

FORM DAN OBJEK KONTROL (2)

Pengertian Sistem Berkas Konsep Dasar Berkas

BAB 2 LANDASAN TEORI. Istilah komputer ( computer ) berasal dari bahasa latin computere yang berarti

BAB IV IMPLEMENTASI DAN PENGUJIAN

SOAL PRODUKTIF KEJURUAN KELAS X MULTIMEDIA

LISTING PROGRAM. Public Sub New(graph As List(Of List(Of edge_))) Me.graph = graph path = New List(Of Integer)() End Sub

BAB 2 LANDASAN TEORI

LAMPIRAN SKRIPSI. A. Lampiran Capture Program. Gambar L.1 Tampilan Layar Menu Home. Gambar L.2 Tampilan Layar Menu Login

BAB 2 LANDASAN TEORI. Istilah komputer (computer) berasal dari bahasa latin computere yang berarti

PEMROGRAMAN VISUAL BASIC

BAB 2 LANDASAN TEORI. 2.1 Kompresi Data

Transkripsi:

65 LISTING PROGRAM 1. Mainform.cs using stem; Sy using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace Home / <summary> / Description of MainForm. / </summary> public partial class MainForm : Form public MainForm() The InitializeComponent() call is required for Windows Forms designer support. InitializeComponent(); TODO: Add constructor code after the InitializeComponent() call. void MainFormLoad(object sender, EventArgs e) Home frmcld = new Home(); frmcld.mdiparent=this; frmcld.show(); void AboutToolStripMenuItemClick(object sender, EventArgs e) About frmcld = new About(); frmcld.mdiparent=this; frmcld.show(); void EliasGammaCodeToolStripMenuItemClick(object sender, Even targs e) Elias frmcld = new Elias(); frmcld.mdiparent=this; frmcld.show(); gs e) void ShannonFanoToolStripMenuItemClick(object sender, EventAr Shannon frmcld = new Shannon(); frmcld.mdiparent=this; frmcld.show();

66 void HelpToolStripMenuItemClick(object sender, EventArgs e) Help frmcld = new Help(); frmcld.mdiparent=this; frmcld.show(); void ExitToolStripMenuItemClick(object sender, EventArgs e) this.close(); void HomeToolStripMenuItemClick(object sender, EventArgs e) Home frmcld = new Home(); frmcld.mdiparent=this; frmcld.show(); 2. Elias.cs using stem; Sy using System.Drawing; using System.IO; using System.Dynamic; using System.Windows.Forms; using System.Text; using System.Collections.Generic; using IronPython.Hosting; namespace Home / <summary> / Description of Elias. / </summary> public partial class Elias : Form public Elias() The InitializeComponent() call is required for Windows Forms designer support. InitializeComponent(); TODO: Add constructor code after the InitializeComponent() call. void ButtonBrowseClick(object sender, EventArgs e) OpenFileDialog dialog = new OpenFileDialog(); dialog.filter = "Document (MsWord) *.doc"; dialog.title = "Open file doc : "; dialog.restoredirectory = true;

67 if(dialog.showdialog() == DialogResult.OK) string dirname = System.IO.Path.GetDirectoryName(dialog.FileName); var fileinfo = new FileInfo(dialog.FileName); var size= fileinfo.length; string drive = dirname.split(system.io.path.volumeseparatorchar)[1]; txtukuranfilee.text=size.tostring(); textboxloadfilepath.text = dirname + "\\" + dialog.safefilename.tostring(); buttonbaca.enabled = true; void ButtonBacaClick(object sender, EventArgs e) Microsoft.Office.Interop.Word.Application wordapp = new Microsoft.Office.Interop.Word.ApplicationClass(); object filenameo = textboxloadfilepath.text.tostring(); object objfalse = false; object objtrue = true; object missing = System.Reflection.Missing.Value; object emptydata = string.empty; try Microsoft.Office.Interop.Word.Document adoc = wordapp.documents.open(ref filenameo, ref objfalse, ref objtrue, r ef missing, ref missing, ref missing, ref missing, ref missing, ref m issing, ref missing, ref objtrue, ref missing, ref missing, ref missi ng, ref missing); adoc.activewindow.selection.wholestory(); adoc.activewindow.selection.copy(); IDataObject data = System.Windows.Forms.Clipboard.GetDataObject(); String filetext = data.getdata(system.windows.forms.dataformats.text).tostring(); System.Windows.Forms.Clipboard.SetDataObject(string.E mpty); textboxdisplaytext.text = filetext; catch(exception err) MessageBox.Show(err.Message); finally MessageBox.Show("File berhasil dibaca"); btncompresseg.enabled = true; void BtnCompressEGClick(object sender, EventArgs e) var input = textboxdisplaytext.text; try var ipy = Python.CreateRuntime(); dynamic eliasgamma =

68 ipy.usefil e ("eliasgamma.py"); DateTime starttime = DateTime.Now; dynamic CR = eliasgamma.processeg(input); dynamic RedudancyData = eliasgamma.processeg1(input); dynamic hasilcompress = eliasgamma.processeg2(input); DateTime endtime = DateTime.Now; TimeSpan elapsed = endtime.subtract(starttime); txtwaktukompres.text = elapsed.hours.tostring("00") + ":" + elapsed.minutes.tostring("00") + ":" + elapsed.se conds.tostring("00") + "." + elapsed.milliseconds.tostring("000"); txtredudancyelias.text= RedudancyData.ToString(); txthasil.text = hasilcompress.tostring(); txtrasio.text = CR.ToString(); File.WriteAllText("D:/data.txt", txthasil.text); var fileinfo = new FileInfo("D:/data.txt"); var size= fileinfo.length; ukuranfile.text=size.tostring(); catch(exception ex) MessageBox.Show(ex.ToString()); btndecompresseg.enabled = true; void TimereliasTick(object sender, EventArgs e) void BtnDecompressEGClick(object sender, EventArgs e) SaveFileDialog savefiledialog1 = new SaveFileDialog(); savefiledialog1.filter = "Word 1997-2003 *.doc Word 2007-2013 *.docx Rich Text File *.rtf All Files (*.*) *.*"; savefiledialog1.title = ""; var input = textboxdisplaytext.text; try var ipy = Python.CreateRuntime(); dynamic eliasgamma = ipy.usefile("eliasgamma.py"); DateTime starttime = DateTime.Now; dynamic hasildecompress = eliasgamma.processeg3(input); DateTime endtime = DateTime.Now; TimeSpan elapsed = endtime.subtract(starttime); txtwaktudekompres.text = elapsed.hours.tostring("00") + ":" + elapsed.minutes.tostring("00") + ":" + elapsed.se

69 conds.tostri ng ("00") + "." + elapsed.milliseconds.tostring("000"); txtdecompresselias.text = hasildecompress.tostring(); if (savefiledialog1.showdialog() == DialogResult.OK) String filetext = txtdecompresselias.text; Microsoft.Office.Interop.Word.Application oword = new Microsoft.Office.Interop.Word.Application(); oword.visible = true; var odoc = oword.documents.add(); Insert a paragraph at the beginning of the document. var paragraph1 = odoc.content.paragraphs.add(); paragraph1.range.text = filetext; odoc.saveas(@savefiledialog1.filename); MessageBox.Show("Penyimpanan berhasil", savefiledialog1.filename); oword.quit(); catch(exception ex) MessageBox.Show(ex.ToString()); btnreset.enabled = true; void TxtDecompressEliasTextChanged(object sender, EventArgs e) void BtnResetClick(object sender, EventArgs e) textboxloadfilepath.text = ""; txtukuranfilee.text = ""; ukuranfile.text = ""; txtrasio.text = ""; txtwaktukompres.text = ""; txtredudancyelias.text = ""; txtwaktudekompres.text = ""; textboxdisplaytext.text = ""; txthasil.text = ""; txtdecompresselias.text = ""; buttonbaca.enabled = false; btncompresseg.enabled = false; btndecompresseg.enabled = false; btnreset.enabled = false;

70 3. Shannon-Fano.cs using stem; Sy using System.Drawing; using System.IO; using System.Dynamic; using System.Windows.Forms; using System.Text; using System.Collections.Generic; using IronPython.Hosting; namespace Home / <summary> / Description of Shannon. / </summary> public partial class Shannon : Form public Shannon() The InitializeComponent() call is required for Windows Forms designer support. InitializeComponent(); TODO: Add constructor code after the InitializeComponent() call. void ButtonBrowseClick(object sender, EventArgs e) OpenFileDialog dialog = new OpenFileDialog(); dialog.filter = "Document (MsWord) *.doc"; dialog.title = "Open file doc : "; dialog.restoredirectory = true; if(dialog.showdialog() == DialogResult.OK) string dirname = System.IO.Path.GetDirectoryName(dialog.FileName); var fileinfo = new FileInfo(dialog.FileName); var size= fileinfo.length; string drive = dirname.split(system.io.path.volumeseparatorchar)[1]; txtukuranfiles.text=size.tostring(); textboxloadfilepath.text = dirname + "\\" + dialog.safefilename.tostring(); buttonbaca.enabled=true; void ButtonBacaClick(object sender, EventArgs e) Microsoft.Office.Interop.Word.Application wordapp = new Microsoft.Office.Interop.Word.ApplicationClass(); object filenameo = textboxloadfilepath.text.tostring(); object objfalse = false; object objtrue = true; object missing = System.Reflection.Missing.Value; object emptydata = string.empty;

71 try Microsoft.Office.Interop.Word.Document adoc = wordapp.documents.open(ref filenameo, ref objfalse, ref objtrue, r ef missing, ref missing, ref missing, ref missing, ref missing, ref m issing, ref missing, ref objtrue, ref missing, ref missing, ref missi ng, ref missing); adoc.activewindow.selection.wholestory(); adoc.activewindow.selection.copy(); IDataObject data = System.Windows.Forms.Clipboard.GetDataObject(); String filetext = data.getdata(system.windows.forms.dataformats.text).tostring(); System.Windows.Forms.Clipboard.SetDataObject(string.E mpty); textboxdisplaytext.text = filetext; catch(exception err) MessageBox.Show(err.Message); finally MessageBox.Show("File berhasil dibaca"); btncompresssf.enabled=true; void BtnCompressSFClick(object sender, EventArgs e) var input = textboxdisplaytext.text; try var ipy = Python.CreateRuntime(); dynamic shannonfano = ipy.usefile("shannonfano.py"); DateTime starttime = DateTime.Now; dynamic CR = shannonfano.processsf(input); dynamic RedudancyData = shannonfano.processsf1(input); dynamic hasilcompress = shannonfano.processsf2(input); DateTime endtime = DateTime.Now; TimeSpan elapsed = endtime.subtract(starttime); txtwaktukompres.text = elapsed.hours.tostring("00") + ":" + elapsed.minutes.tostring("00") + ":" + elapsed.se conds.tostring("00") + "." + elapsed.milliseconds.tostring("000"); txtredudancyshannon.text= RedudancyData.ToString(); txthasil.text = hasilcompress.tostring(); txtrasio.text = CR.ToString(); File.WriteAllText("D:/data.txt", txthasil.text); var fileinfo = new FileInfo("D:/data.txt");

72 var size= fileinfo.length; ukuranfile.text=size.tostring(); catch(exception ex) MessageBox.Show(ex.ToString()); btndecompresssf.enabled=true; void BtnDecompressSFClick(object sender, EventArgs e) SaveFileDialog savefiledialog1 = new SaveFileDialog(); savefiledialog1.filter = "Word 1997-2003 *.doc Word 2007-2013 *.docx Rich Text File *.rtf All Files (*.*) *.*"; savefiledialog1.title = ""; var input = textboxdisplaytext.text; try var ipy = Python.CreateRuntime(); dynamic shannonfano = ipy.usefile("shannonfano.py"); DateTime starttime = DateTime.Now; dynamic hasildecompress = shannonfano.processsf3(input); DateTime endtime = DateTime.Now; TimeSpan elapsed = endtime.subtract(starttime); txtwaktudekompres.text = elapsed.hours.tostring("00") + ":" + elapsed.minutes.tostring("00") + ":" + elapsed.se conds.tostring("00") + "." + elapsed.milliseconds.tostring("000"); txtdecompressshannon.text = hasildecompress.tostring(); if (savefiledialog1.showdialog() == DialogResult.OK) String filetext = txtdecompressshannon.text; Microsoft.Office.Interop.Word.Application oword = new Microsoft.Office.Interop.Word.Application(); oword.visible = true; var odoc = oword.documents.add(); Insert a paragraph at the beginning of the document. var paragraph1 = odoc.content.paragraphs.add(); paragraph1.range.text = filetext; odoc.saveas(@savefiledialog1.filename); MessageBox.Show("Penyimpanan berhasil", savefiledialog1.filename); oword.quit(); catch(exception ex)

73 MessageBox.Show(ex.ToString()); btnreset.enabled=true; void BtnResetClick(object sender, EventArgs e) textboxloadfilepath.text = ""; txtukuranfiles.text = ""; ukuranfile.text = ""; txtrasio.text = ""; txtwaktukompres.text = ""; txtredudancyshannon.text = ""; txtwaktudekompres.text = ""; textboxdisplaytext.text = ""; txthasil.text = ""; txtdecompressshannon.text = ""; buttonbaca.enabled = false; btncompresssf.enabled = false; btndecompresssf.enabled = false; btnreset.enabled = false; void Label8Click(object sender, EventArgs e) 4. Eliasgamma.py #*- coding: utf-8 -*- #title: Elias' Gamma and Shannon-Fano's Algorithm #purpose: Data Compression #author: 1.Mohammad Andri Budiman 2.Nurhennida Br Sitepu #version: 1.3 #date: May 5nd 2014 #time: 18:30 from math import log #fungsi berikut ini mengembalikan 2 nilai, yaitu: #(1) list char = karakter apa saja yang ada pada string st #(2) list freq = berapa frequency masing-masing karakter def count_freq(st): char = list(set(st)) freq = [] for i in char: x = st.count(i) freq.append(x) return char, freq #fungsi berikut ini mengembalikan 2 nilai yaitu: #(1) list freq yang sudah tersortir descending order #(2) list char yang sudah tersortir mengikuti urutan freq-nya def InsertionSort(f, c): n = len(f)

74 for i in range(1, n): for j in range(0, i): if f[i] > f[j]: f.insert(j, f.pop(i)) c.insert(j, c.pop(i)) return f, c #fungsi berikut ini menjumlahkan semua angka yang ada pada list f def sum(f): s = 0 for i in f: s = s + i return s #fungsi berikut ini mengembalikan 2 nilai, yaitu: #(1) difference = beda antara jumlah freq table atas dgn jumlah freq table bawah #(2) row = baris tempat pemotongan tabel, dihitung dari bawah def findrow(f): difference = sum(f) row = 1 t = len(f) for i in range(1, t): upper = f[0:(t-i)] lower = f[t - i:] x = abs(sum(upper) - sum(lower)) if x < difference: difference = x # difference = beda antara jumlah freq table atas dgn jumlah freq table bawah row = i # row = baris tempat pemotongan table return difference, row def EliasGamma(st): if len(st) <= 1: raise Exception(' String harus > 1') t = len(char) if t == 1: return char[0], '1' eg = [] for i in range(1, t + 1): if i == 1: eg.append('1') continue z = countzero(i) s = '' for j in range(z): s = s + '0' s = s + '1' c = i - pow(2, z) # banyaknya sisa i - 2^n b = dec2bin(c) pad = z - len(b) s = s + pad * '0' + b eg.append(s) return char, eg

75 def untzero(n): co return int(log(n,2)) def dec2bin(dec): dec = int(dec) bin = '' r = dec % 2 bin = str(r) + bin dec=2 while(dec!= 0): r = dec % 2 bin = str(r) + bin dec=2 return bin def bin2dec(bin): bin = bin[::-1] n = 1 dec = 0 for i in bin: dec+=(int(i) * n) n*=2 return dec #fungsi berikut mengubah string-bits menjadi kode ASCII def encode(sb): code = '' for i in range(0, len(sb), 8): x = sb[i:i+8] y = chr(bin2dec(str(x))) code += y return code #fungsi berikut mengubah kode ASCII kembali menjadi string-bits def decode(code): sb = '' t = len(code) for i in range(len(code)): x = code[i] y = dec2bin(ord(x)) if len(y) < 8: z = 8 - len(y) % 8 y = '0' * z + y sb += y return sb #fungsi berikut mengubah string menjadi string-bits def string2sb(st, c, s): sb = '' for i in st: k = c.index(i) sb = sb + s[k] x = len(sb) % 8 pad = 0 if x!= 0: pad = (8 - x) sb = sb + '0' * pad d = dec2bin(pad) dl = len(d) y = 8 - dl

76 sb = sb + '0' * y + d return sb #fungsi berikut mengubah string-bits kembali menjadi string def decompress(sb, c, s): st = '' bit = '' t = len(sb) pad = bin2dec(sb[-8:]) sb = sb[0:t-pad-8] for i in range(len(sb)): bit = bit + sb[i] if bit in s: x = s.index(bit) y = c[x] st = st + y bit = '' return st def processeg(st): c, s = EliasGamma(st) for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits return CR def processeg1(st): c, s = EliasGamma(st) for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0-1.0/CR) * 100 return SS def processeg2(st): c, s = EliasGamma(st) for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0-1.0/CR) * 100 code = encode(sb) dc = decode(code) return dc def processeg3(st): c, s = EliasGamma(st)

77 for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0-1.0/CR) * 100 code = encode(sb) dc = decode(code) ds = decompress(dc, c, s) return ds 5.Shannonfano.py #*- coding: utf-8 -*- #title: Elias' Gamma and Shannon-Fano's Algorithm #purpose: Data Compression #author: 1.Mohammad Andri Budiman 2.Nurhennida Br Sitepu #version: 1.3 #date: May 5nd 2014 #time: 18:30 from math import log #fungsi berikut ini mengembalikan 2 nilai, yaitu: #(1) list char = karakter apa saja yang ada pada string st #(2) list freq = berapa frequency masing-masing karakter def count_freq(st): char = list(set(st)) freq = [] for i in char: x = st.count(i) freq.append(x) return char, freq #fungsi berikut ini mengembalikan 2 nilai yaitu: #(1) list freq yang sudah tersortir descending order #(2) list char yang sudah tersortir mengikuti urutan freq-nya def InsertionSort(f, c): n = len(f) for i in range(1, n): for j in range(0, i): if f[i] > f[j]: f.insert(j, f.pop(i)) c.insert(j, c.pop(i)) return f, c #fungsi berikut ini menjumlahkan semua angka yang ada pada list f def sum(f): s = 0 for i in f: s = s + i return s #fungsi berikut ini mengembalikan 2 nilai, yaitu: #(1) difference = beda antara jumlah freq table atas dgn jumlah freq table bawah #(2) row = baris tempat pemotongan tabel, dihitung dari bawah def findrow(f): difference = sum(f)

78 row = 1 t = len(f) for i in range(1, t): upper = f[0:(t-i)] lower = f[t - i:] x = abs(sum(upper) - sum(lower)) if x < difference: difference = x # difference = beda antara jumlah freq table atas dgn jumlah freq table bawah row = i # row = baris tempat pemotongan table return difference, row #fungsi berikut ini berfungsi melakukan table splitting secara rekursif, sekaligus meng-update kode Shannon-Fano def split(s, F, C, charset, sf): t = len(s) if t > 1: diff, row = findrow(f) S1 = [] S2 = [] F1 = [] F2 = [] C1 = [] C2 = [] S1 = S[0:t - row] S2 = S[t - row:] F1 = F[0:t - row] F2 = F[t - row:] for i in range(t): if i < t - row: C[i] = str(c[i]) + '0' else: C[i] = str(c[i]) + '1' C1 = C[0:t - row] C2 = C[t - row:] if len(s1) == 1: charset.append(s1[0]) sf.append(c1[0]) if len(s2) == 1: charset.append(s2[0]) sf.append(c2[0]) split(s1, F1, C1, charset, sf) split(s2, F2, C2, charset, sf) #fungsi berikut ini mengembalikan 2 nilai, yaitu: #(1) charset = character set #(2) sf = kode Shannon-Fano yang bersesuaian def ShannonFano(st): if len(st) <= 1: raise Exception(' String harus > 1') t = len(char) if t == 1: return char[0], '1' global charset, sf code = [] charset = [] sf = []

79 for i in range(t): code.append('') split(char, freq, code, charset, sf) return charset, sf def dec2bin(dec): dec = int(dec) bin = '' r = dec % 2 bin = str(r) + bin dec=2 while(dec!= 0): r = dec % 2 bin = str(r) + bin dec=2 return bin def bin2dec(bin): bin = bin[::-1] n = 1 dec = 0 for i in bin: dec+=(int(i) * n) n*=2 return dec #fungsi berikut mengubah string-bits menjadi kode ASCII def encode(sb): code = '' for i in range(0, len(sb), 8): x = sb[i:i+8] y = chr(bin2dec(str(x))) code += y return code #fungsi berikut mengubah kode ASCII kembali menjadi string-bits def decode(code): sb = '' t = len(code) for i in range(len(code)): x = code[i] y = dec2bin(ord(x)) if len(y) < 8: z = 8 - len(y) % 8 y = '0' * z + y sb += y return sb #fungsi berikut mengubah string menjadi string-bits def string2sb(st, c, s): sb = '' for i in st: k = c.index(i) sb = sb + s[k] x = len(sb) % 8 pad = 0 if x!= 0: pad = (8 - x) sb = sb + '0' * pad d = dec2bin(pad)

80 dl = len(d) y = 8 - dl sb = sb + '0' * y + d return sb #fungsi berikut mengubah string-bits kembali menjadi string def decompress(sb, c, s): st = '' bit = '' t = len(sb) pad = bin2dec(sb[-8:]) sb = sb[0:t-pad-8] for i in range(len(sb)): bit = bit + sb[i] if bit in s: x = s.index(bit) y = c[x] st = st + y bit = '' return st def processsf(st): c, s = ShannonFano(st) for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits return CR def processsf1(st): c, s = ShannonFano(st) for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0-1.0/CR) * 100 return SS def processsf2(st): c, s = ShannonFano(st) for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0-1.0/CR) * 100 code = encode(sb) dc = decode(code) ds = decompress(dc, c, s) return dc def processsf3(st):

81 c, s = ShannonFano(st) for i in range(len(c)): sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb) CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0-1.0/CR) * 100 code = encode(sb) dc = decode(code) ds = decompress(dc, c, s) return ds

82 CURRICULUM VITAE Data Pribadi Nama Lengkap : Nurhennida Br Sitepu Nama Panggilan : Nur Tempat/ Tgl. Lahir : Berastagi, 1 Maret 1992 Jenis Kelamin : Perempuan Agama : Islam Warga Negara : Indonesia Alamat : Jl. Pasar VII No.12 Padang Bulan Medan No. HP : 087884858092 / 085658052929 Email : nurhestp@gmail.com Status : Belum Menikah Latar Belakang Pendidikan 1. SD SD Neg 040458 Berastagi 2. SMP SMP N.1 Berastagi 3. SMA SMA N.1 Berastagi 4. Universitas Pengalaman Kerja No Instansi/Lembaga Jabatan/Posisi Tahun 1 LCC Pengajar 2010 2011 2 IKLC Kepala Divisi Karya / Pengajar 2013 2014 Kemampuan dalam Bidang Komputer Software Aplikasi : Microsoft Office, Photoshop, Dreamweaver Bahasa Pemrograman : C++, C# Simulator : Matlab

83 Pengalaman Organisasi No Nama Organisasi Jabatan Tahun Menjabat 1 OSIS SMA N.1 Berastagi Sekretaris Umum 2008 2009 2 BKM SMA N.1 Berastagi Angggota Humas 2009 2010 3 BKM Al-KHUWARIZMI Anggota Kewirausahaan 2010 2011 4 IMILKOM Anggota Kemahasiswaan 2011 2012 5 GAMADIKSI Anggota Divisi pendidikan 2011 2012 6 UKMI Al-KHUWARIZMI Bendahara Umum 2011 2012 7 IMILKOM Kepala Biro Kesekretariatan 2012 2013 8 UKM ROBOTIK SIKONEK Sekretaris Umum 2013 2014 9 IMILKOM Kepala Biro Kesekretariatan 2013 2014 10 Relawan TIK Sumatera Utara Anggota 2013 Sekarang