• Tidak ada hasil yang ditemukan

Perbandingan Algoritma Elias Gamma Code Dengan Shannon-Fano Untuk Kompresi File Teks

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perbandingan Algoritma Elias Gamma Code Dengan Shannon-Fano Untuk Kompresi File Teks"

Copied!
19
0
0

Teks penuh

(1)

LISTING PROGRAM

1. Mainform.cs

using System;

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();

}

void ShannonFanoToolStripMenuItemClick(object sender, EventAr gs e)

{

Shannon frmcld = new Shannon(); frmcld.MdiParent=this;

(2)

}

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 System;

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 : ";

(3)

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

{

(4)

ipy.UseFile ("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") + ":" +

(5)

conds.ToString ("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;

(6)

3. Shannon-Fano.cs

using System;

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;

(7)

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();

(8)

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(); }

(9)

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):

(10)

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') char, freq = count_freq(st)

t = len(char) if t == 1:

return char[0], '1' char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) 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)

(11)

def countZero(n):

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)

(12)

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):

char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) 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):

char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) 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):

char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) 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):

char, freq = count_freq(st)

(13)

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):

(14)

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') char, freq = count_freq(st)

t = len(char) if t == 1:

return char[0], '1' char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) global charset, sf

(15)

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)

(16)

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):

char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) 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):

char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) 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):

char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) 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

(17)

char, freq = count_freq(st)

freq, char = InsertionSort(freq, char) 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)

(18)

CURRICULUM VITAE

Nama Lengkap

: Nur hennida Br Sitepu

Nama Panggilan

: Nur

Tempat/ Tgl. Lahir

: Ber astagi, 1 Mar et 1992

Jenis Kelamin

: Per empuan

Agama

: Islam

War ga Negar a

: Indonesia

Alamat

: Jl. Pasar VII No.12 Padang Bulan

Medan

No. HP

: 087884858092 / 085658052929

Em ail

: nur hestp@gm ail.com

Status

: Belum Menikah

Latar Belakang Pendidikan

1.

SD

SD Neg 040458 Ber astagi

2.

SMP

SMP N.1 Ber astagi

3.

SMA

SMA N.1 Ber astagi

4.

Univer sitas

Univer sitas Sumater a Utar a

Pengalaman Kerja

No

Instansi/ Lembaga

Jabatan/ Posisi

Tahun

1

LCC

Pengajar

2010 – 2011

2

IKLC

Kepala Divisi Kar ya / Pengajar

2013 – 2014

Softwar e Aplikasi

: Micr osoft Office, Photoshop , Dr eamw eaver

Bahasa Pemr ogr aman

: C+ + , C#

Sim ulator

: Matlab

D ata Pribadi

(19)

Pengalaman Organisasi

No Nama Or ganisasi

Jabatan

Tahun Menjabat

1

OSIS SMA N.1 Ber astagi

Sekr etar is Umum

2008 – 2009

2

BKM SMA N.1 Ber astagi

Angggota Hum as

2009 – 2010

3

BKM Al-KHUWARIZMI

Anggota Kewir ausahaan

2010 – 2011

4

IMILKOM

Anggota Kemahasiswaan

2011 – 2012

5

GAMADIKSI

Anggota Divisi pendidikan

2011 – 2012

6

UKMI Al-KHUWARIZMI

Bendahar a Umum

2011 – 2012

7

IMILKOM

Kepala Bir o Kesekr etar iatan

2012 – 2013

8

UKM ROBOTIK SIKONEK

Sekr etar is Umum

2013 – 2014

9

IMILKOM

Kepala Bir o Kesekr etar iatan

2013 – 2014

10

Relawan TIK Sumater a Utar a

Anggota

2013 – Sekar ang

Gambar

table bawah #(2) row = baris tempat pemotongan tabel, dihitung dari bawah def findrow(f):
table bawah #(2) row = baris tempat pemotongan tabel, dihitung dari bawah def findrow(f):

Referensi

Dokumen terkait

Penelitian ini mengangkat masalah submodul (A,B)-invarian dan submodul ketercapaian yang muncul dari suatu masalah dalam teori sistem linear atas daerah ideal utama (d.i.u) yang

Badan adalah sekumpulan orang danatau modal yang merupakan kesatuan, baik yang melakukan usaha maupun yang tidak melakukan usaha yang meliputi perseroan

[r]

Suku pertama dan suku kelima suatu barisan aritmetika berturut–turut adalah 2 dan 10, jumlah dua puluh suku pertama barisan tersebut adalah ….. Diketahui

Adapun tujuan dari penelitian ini adalah untuk mengetahui bagaimana kondisi ketersediaan pangan di Indonesia saat ini dan bagaimana pengaruh kontribusi

penelitian ini bertujuan untuk mengetahui pengaruh terapi puisi sebagai media ekspresi emosi terhadap penurunan tingkat stres pada mahasiswa baru.. Desain penelitian ini

Kompetisi yang terjadi antara surat kabar Solopos dan Joglosemar dalam hal penyajian rubrik-rubrik berita ( type of content ). Kompetisi ini mencakup besarnya

Hasil pembelajaran yang akan dicapal deng alah.. Berdasarkan pengamatan penulis dalam pelaksanaan metode pembelajaran ini, siswa lebih antusias dalam belajar. Hal